当前位置: 代码迷 >> 综合 >> 3Java异常处理——1错误处理——4自定义异常
  详细解决方案

3Java异常处理——1错误处理——4自定义异常

热度:9   发布时间:2024-02-04 23:00:50.0

1.JDK已有的异常

  • RuntimeException
    • NullPointerException
    • IndexOutOfBoundsException
    • SecurityException
    • IllegalArgumentException
      • NumberFormatException
  • IOException
    • UnsupportedCharsetException,FileNotFoundException,SocketException....
  • ParseException,GeneralSecurityException,SQLException,TimeoutException

异常

当需要抛出异常时:

  • 尽量使用JDK已定义的异常类型
public static void main(String[] args){try {process1();} catch (Exception e) {e.printStackTrace();}
}static void process1() {throw new IllegalArgumentException();
}
  • 也可以定义新的异常类型
    • 从适合的Exception派生
    • 从RuntimeException派生
public class BadFileFormatException extends IOException {}public class UserNotFoundException extends RuntimeException {}

2.自定义异常

可以定义新的异常关系数:

  • 从适合的Exception派生BaseException
  • 其他Exception从BaseException派生
public class BaseException extends RuntimeException{}public class UserNotFoundException extends BaseException{}public class LoginFaileException extends BaseException{}

自定义异常应该提供多个构造方法,这样,抛出异常的时候,就可以选择合适的构造方法。

如果需要将其他异常转换为BaseException,需要将原有的异常传入到BaseException时,这个时候需要一些构造方法,才能接收原始异常信息。

利用Eclipse可以快速生成构造方法

单击右键——source——Generate Constructors from Superclass

public class BaseException extends RuntimeException{public BaseException() {super();// TODO Auto-generated constructor stub}public BaseException(String message, Throwable cause) {super(message, cause);// TODO Auto-generated constructor stub}public BaseException(String message) {super(message);// TODO Auto-generated constructor stub}public BaseException(Throwable cause) {super(cause);// TODO Auto-generated constructor stub}
}

3.总结

  • 自定义异常应该从合适的Exception派生
  • 推荐使用RuntimeException
  • 自定义异常应该提供多个构造方法
  • 可以使用IDE根据父类快速创建构造方法