異常鏈

異常鏈是一種面向對象編程技術 ， 指將捕獲的異常包裝進一個新的異常中並重新拋出的異常處理方式 。 原異常被保存爲新異常的一個屬性 （ 比如cause ） 。 這個想法是指一個方法應該拋出定義在相同的抽象層次上的異常 ， 但不會丟棄更低層次的信息 。 比如 ， 播放視頻文件的方法可能捕獲讀取文件過程中的異常 ， 將其包裝在新拋出的播放視頻文件的異常中 。 用戶界面部分不需要知道讀取字節塊 、 eof 調用或其他操作時發生的錯誤 ， 這是意外的文件結尾 、 讀取錯誤或者其他的錯誤 ： 用戶界面只需要從 cause 屬性中提取出異常信息 。 用戶界面層會有自身一系列的異常 。 若對 cause 感興趣 ， 可以在調試期間 、 或在適當的日誌中查看異常的堆棧跟蹤信息 （ stack track ） 。 Java 中 受控異常 （ Checked exceptions ） 特別強調了拋出正確類型的異常 ， 從 Java 1.4 版本開始 ， 幾乎所有的異常都支持異常鏈 。 在運行時環境 ， 比如 Java 或. Net 中 ， 都有工具連接到運行時引擎 ； 每當感興趣的異常發生 ， 這些工具就記錄下內存中的調試信息以及拋出異常的時間 （ 棧和堆上的值 ） 。 這些工具提供異常截取 （ Exception Interception ） 功能 ， 它們爲生產環境 、 測試環境 、 開發環境中的Java程序中出現的的異常提供了root - cause信息 。