1 异常类的父子关系
非检查异常 包括 运行时异常,error 检查异常 包括 非运行时异常)
2 简单的据介绍一下基础异常这个对象Throwable包含的内容
1.8源码
public class Throwable implements Serializable {
private static final long serialVersionUID = -3042686055658047285L;//序列化的标识
private transient Object backtrace; //临时存储一些栈回溯的数据
...
...
private String detailMessage;//异常的信息
private StackTraceElement[] stackTrace = UNASSIGNED_STACK;// 异常信息的异常栈
private Throwable cause = this; //引起异常的原因 如果指向的是自己或者null 说明是该异常是产生异常的源头
...
printStackTrace()//异常打印
}
其他的省略了主要是就这三个对象
消息 异常栈 异常原因 (本身也是一个异常)
3 构造异常
构造一个异常exception只需要 具备这三个地方
message 初始化 new Throwable(“message”)
.setStackTrace(“异常栈”)
initCause(cause) //存放原因
由此第三方的异常均可转化为自己需要转化的异常
其中printStackTrace()中根本调用的是printEnclosedStackTrace()
其中有这么一句话
for (int i = 0; i <= m; i++)
s.println(prefix + "\tat " + trace[i]);
if (framesInCommon != 0)
s.println(prefix + "\t... " + framesInCommon + " more");
这就是为什么会出现 11 more 的原因