異常的類型通常足以正確處理它(例如,您嘗試打開文件並獲得FileNotFoundException
)。但是,有些情況下可能會捕獲同一類型的多個異常。例如,可能由多個參數引起的IllegalArgumentException
。 IllegalArgumentException
不會向Throwable
接口(根據在線javadoc)添加任何其他方法(或公用字段),這意味着您唯一可以信賴的信息是嵌套的異常(可能存在或可能不存在)以及消息(這是供人食用的)。以編程方式區分異常
我不喜歡延伸IllegalArgumentException
來添加結構化信息的想法,因爲其他人將不得不學習新的類。而且我不喜歡亂拋垃圾的項目與非常具體的異常類。 使用消息字段也是一個壞主意,因爲它不適用於編程式訪問。
我認爲IllegalArgumentException
應該包含詳細信息,例如有問題的類函數和參數。一般來說,自定義異常應該提供額外的細節(其他的只是它們的類型),以進行更細粒度的異常處理。
一般認爲設計異常類和處理同類異常的最佳實踐是什麼?
你可以使用多個的try-catch塊,以確保你從右邊的代碼 – xmoex
'嘗試{someFunction(ARG1,ARG2,ARG3)得到正確的除外; }'如果我得到由一個參數引起的IllegalArgumentException?我只有一個'嘗試' – Anthony
我明白你的意思......也許你只是檢查參數,不要拋出異常? – xmoex