catch 子句按宣告順序搜尋「最近匹配」。catch 捕獲(多型)。try { throw new Sneeze(); }
catch (Sneeze s) { ... } // 精確匹配,優先執行
catch (Annoyance a) { ... } // 父類匹配,若無上一句則執行
若父類 catch 置於子類之前,編譯錯誤「unreachable catch clause」,因子類永無機會匹配。
// 錯誤順序
catch (Annoyance a) { ... }
catch (Sneeze s) { ... } // 編譯錯誤
由具體到通用排列 catch;捕獲基類可統一處理整個異常家族,新增子異常不影響客戶代碼。