异常链 异常链是一种面向对象编程技术指将捕获的异常包装进一个新的异常中并重新抛出的异常处理方式原异常被保存为新异常的一个属性比如cause这个想法是指一个方法应该抛出定义在相同的抽象层次上的异常但不会丢弃更低层次的信息 比如播放视频文件的方法可能捕获读取文件过程中的异常将其包装在新抛出的播放视频文件的异常中用户界面部分不需要知道读取字节块 eof 调用或其他操作时发生的错误这是意外的文件结尾读取错误或者其他的错误用户界面只需要从 cause 属性中提取出异常信息用户界面层会有自身一系列的异常若对 cause 感兴趣可以在调试期间或在适当的日志中查看异常的堆栈跟踪信息 stack track  Java 中 受控异常Checked exceptions 特别强调了抛出正确类型的异常从 Java 版本开始几乎所有的异常都支持异常链 在运行时环境比如 Java 或 Net 中都有工具连接到运行时引擎每当感兴趣的异常发生这些工具就记录下内存中的调试信息以及抛出异常的时间栈和堆上的值这些工具提供异常截取Exception Interception功能它们为生产环境测试环境开发环境中的Java程序中出现的的异常提供了rootcause信息