常用的异常有:Error、Exception,这两个类的基类都是Throwable。
其中Error是用来表示编译时和系统的错误,这一类问题,基本不需要我们关心。
Exception就是我们常见的异常。由源码可知,Exception类自身并没有什么重要的东西,它只是Throwable类的一个子类。
public class Exception extends Throwable {
static final long serialVersionUID = -3387516993124229948L;
public Exception() {
super();
}
public Exception(String message) {
super(message);
}
public Exception(String message, Throwable cause) {
super(message, cause);
}
public Exception(Throwable cause) {
super(cause);
}
protected Exception(String message, Throwable cause,
boolean enableSuppression,
boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
}
因此我们学习异常的源码重心就放在了Throwable类上。
一个异常类,主要的成员属性有:异常名,以及描述信息,和异常的栈帧追踪。
异常名:告诉我们是什么异常,通常用类名表示,比如IOException,这是IO异常。
描述信息:则是该异常的具体描述,是如何发生的,比如网络连接失败等等。
异常的栈帧追踪:这记录了异常发生的代码位置。一般从main函数开始,记录每一步函数调用,一直到最后导致异常的代码。
public class Throwable implements Serializable {
...
priv