1.常常会在捕获一个异常后再抛出另外一个异常,并且希望把原始信息保存下来,这被称为异常链
2.在JDk1.4前,程序员必须自己编写代码来保存原始异常信息
3.现在所有Throwable的子类子构造器都可以接受一个cause对象作为参数,这个cause就是异常原由,代表着原始异常,即使在当前位置创建并抛出新的异常,也可以通过这个cause追踪到异常最初发生的位置
4.只有Error,Exception,RuntimeException提供了带cause参数的构造器
其他的所有异常只有通过initCause()来设置cause了