2010-01-22 21 views

回答

12

由第一抓 - 但這樣會一堆其他異常。你不應該抓到比你想要的更多的東西。

第二個是更好,如果你真的有趕上...但通常這表明在調用代碼中的錯誤。有時候,這是另一種方法的情況下上漲沒有驗證參數等。在一個理想的世界,那IllegalArgumentException拋出任何時候應該有主叫方傳遞之前驗證的值,或致電的方式版本將以非常規方式失敗(例如.NET中的TryParse模式,在沒有out參數的情況下,這在Java中更爲嚴格)。這並非總是如此,但每當你得到一個IllegalArgumentException這是值得檢查,看看你是否能通過調用方法前檢查值來避免它。

0

它確實取決於手頭的情況,要麼本身是正確的。在不縮小問題範圍的情況下,提供「最佳使用」示例有點困難。

3

您應該遠離catch (Exception),因爲那樣您可以每捕獲可能的例外。如果你真的只預計IllegalArgumentException和處理這種情況下,你不應該拓寬範圍;那麼更好地爲其他類型的異常添加更多的catch塊。

7

你不應該處理一個IllegalArgumentException。它的目的是通知開發者,他已經調用了一個錯誤參數的方法。解決方法是,用其他參數調用該方法。

如果你必須抓住它,你應該使用

catch(IllegalArgumentException e) 
+0

除非它拋出它需要在更高層次上重新審視例外它向上退出到調用者之前的庫。 – tar

相關問題