异常链是一种面向对象编程技术，指将捕获的异常包装进一个新的异常中并重新抛出的异常处理方式。原异常被保存为新异常的一个属性（比如"cause"）。这个想法是指一个方法应该抛出定义在相同的抽象层次上的异常，但不会丢弃更低层次的信息。比如，播放视频文件的方法可能捕获读取文件过程中的异常，将其包装在新抛出的播放视频文件的异常中。用户界面部分不需要知道读取字节块、 eof() 调用或其他操作时发生的错误，这是意外的文件结尾、读取错误或者其他的错误：用户界面只需要从 "cause" 属性中提取出异常信息。用户界面层