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

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导入父类的构造的方法

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根据父类快速创建构造方法

posted on 2019-01-22 21:03  singleSpace  阅读(563)  评论(0编辑  收藏  举报