廖雪峰Java3异常处理-1错误处理-4自定义异常

时间:2023-02-06 09:00:20

JDK已有的异常:

  • RuntimeException

    * NullPointerException

    * IndexOutOfBoundsException

    * SecurityException

    * IllegalArgumentException
    • NumberOfFormatException
  • IOException

    * UnsupportedCharsetException,FileNotFoundException,SocketException
  • ParseException,GeneralSecurityException,SQLException,TimeoutException

    当需要抛出异常时,尽量使用JDK已定义的异常类型。如传入的参数不正确,一般使用IllegalArugmentException.

    定义新的异常类型:
  • 从合适的Exception派生
  • 从RuntimeException派生

    不需要强制捕获自定义的异常,也不需要在方法中声明需要抛出的异常
public class BadFileFormatException extends IOException{}
public class UserNotFoundException extends RuntimeException{}

自定义异常

可以定义新的异常关系树

从适合的Exception派生BaseException

其他Exception从BaseException派生

public class BaseException extends RuntimeException{}
public class UserNotFoundException extends BaseException{}
public class LoginFailedException extends BaseException{}

自定义异常时应该提供多个构造方法

可以直接使用generate-Constructor导入父类的构造的方法

廖雪峰Java3异常处理-1错误处理-4自定义异常

public class BaseException extends RuntimeException {

    public BaseException() {
} public BaseException(String message) {
super(message);
} public BaseException(String message, Throwable cause) {
super(message, cause);
} public BaseException(Throwable cause) {
super(cause);
} public BaseException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
}
public class UserNotFoundException extends BaseException {
public UserNotFoundException() {
} public UserNotFoundException(String message) {
super(message);
} public UserNotFoundException(String message, Throwable cause) {
super(message, cause);
} public UserNotFoundException(Throwable cause) {
super(cause);
} public UserNotFoundException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
}

总结:

自定义的异常应该从合适的Exception派生

推荐RuntimeException

自定义异常应该提供多个构造方法

可以使用IDE根据父类快速创建构造方法