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