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