[Java] Excepciones personalizadas para el manejo de excepciones

Las excepciones comunes definidas por la biblioteca estándar de Java incluyen:

Exception
│
├─ RuntimeException
│  │
│  ├─ NullPointerException
│  │
│  ├─ IndexOutOfBoundsException
│  │
│  ├─ SecurityException
│  │
│  └─ IllegalArgumentException
│     │
│     └─ NumberFormatException
│
├─ IOException
│  │
│  ├─ UnsupportedCharsetException
│  │
│  ├─ FileNotFoundException
│  │
│  └─ SocketException
│
├─ ParseException
│
├─ GeneralSecurityException
│
├─ SQLException
│
└─ TimeoutException

Cuando necesitemos lanzar excepciones en el código, intente usar los tipos de excepción definidos por JDK. Por ejemplo, la verificación de parámetros no es válida y debería arrojar IllegalArgumentException:

static void process1(int age) {
    
    
    if (age <= 0) {
    
    
        throw new IllegalArgumentException();
    }
}

En un proyecto grande, puede personalizar nuevos tipos de excepciones, pero es muy importante mantener un sistema de herencia de excepciones razonable.

Una práctica común es personalizar uno BaseExceptioncomo la "excepción raíz" y luego derivar excepciones de varios tipos de negocios.

BaseExceptionExceptionSe requiere derivar de uno adecuado , y generalmente se recomienda RuntimeExceptionderivar de:

public class BaseException extends RuntimeException {
    
    
}

Las excepciones de otros tipos de negocios pueden derivarse BaseExceptionde:

public class UserNotFoundException extends BaseException {
    
    
}

public class LoginFailedException extends BaseException {
    
    
}

...

Los personalizados BaseExceptiondeben proporcionar múltiples métodos de construcción:

public class BaseException extends RuntimeException {
    
    
    public BaseException() {
    
    
        super();
    }

    public BaseException(String message, Throwable cause) {
    
    
        super(message, cause);
    }

    public BaseException(String message) {
    
    
        super(message);
    }

    public BaseException(Throwable cause) {
    
    
        super(cause);
    }
}

Los métodos de construcción anteriores en realidad se copian tal como son RuntimeException. De esta forma, cuando se lanza una excepción, se puede seleccionar un método de construcción apropiado. El IDE puede generar rápidamente el método de construcción de la subclase según la clase principal.

resumen

Al lanzar una excepción, intente reutilizar los tipos de excepción definidos por JDK;

Al personalizar el sistema de excepciones, se recomienda derivar la "excepción raíz" de RuntimeException y luego derivar la excepción comercial;

Al personalizar las excepciones, se deben proporcionar varios métodos de construcción.

Supongo que te gusta

Origin blog.csdn.net/ihero/article/details/132189512
Recomendado
Clasificación