一,前言
之前工作的时候,有总结过几种异常,但现在。。全忘记了,原谅我这3s的记忆,特此再mark下,好记性真的不如烂笔头
二,异常
异常是程序中经常会用到的代码,所谓异常就是不满足代码运行的结果,抛出错误的一种行为,而这种行为处理又可以分为两种处理方式,1是捕获异常,也就是try..catch..finally,2是不处理,直接抛出异常,让用户自行定位问题原因。
在Java中,所有异常类的父类是Throwable类,Error类是error类型异常的父类,Exception类是exception类型异常的父类,RuntimeException类是所有运行时异常的父类,RuntimeException以外的并且继承Exception的类是非运行时异常。
2.1 系统异常
- NullPointerException(最最常见的异常,俗称NPE)
- IndexOutOfBoundsException
- IllegalArgumentException
- IOException
- SQLException
- ........
系统异常很多,但常见的就那几个,一般情况下,系统异常用来排查问题和捕获异常,使程序可以继续往下走,这就涉及到前面提到的try..catch..finally结构了,
2.2 自定义异常
一般情况下,自定义异常类会继承RuntimeException类或者Exception类
格式:
public class XXException extends Exception|RuntimeException{
添加一个空参数的构造方法
添加一个带异常信息的构造方法
}
注意:
1.自定义异常类一般是以Exception结尾,说明该类是一个异常类
2.自定义异常类,必须继承Exception或者RuntimeException
继承Exception:那么自定义的异常类就是一个编译期异常,如果出现了编译期异常就必须处理,要么throws ,要么try catch
继承RuntimeException:那么自定义的异常就是一个运行期异常,无需处理,交给虚拟机处理,中断处理。
例子:
public class BaseException extends RuntimeException {
public BaseException() {
super();
}
public BaseException(String message, Throwable cause) {
super(message, cause);
}
public BaseException(String message) {
super(message);
}
public BaseException(Throwable cause) {
super(cause);
}
}