我在C#入門書中讀到,如果你不知道如何處理它,你不應該發現異常。在使用Java進行編程時,考慮到這一點建議,我有時會發現我不知道如何處理異常,但我不得不趕上它或「滲透」以避免編譯錯誤。我寧願不要在調用樹中使用throws
條款,所以我經常採用將「異常」「轉換」爲RuntimeException
,如下所示。將throws
子句添加到許多方法中,對於沒有真正「處理」(正確處理)的異常似乎冗長和分散注意力。下面是不好的風格,如果是的話,什麼是更好的方式來處理這個問題?處理災難性例外
try {
thread.join();
}
catch (InterruptedException e) {
Console.printwriter.format("%s\n", e.printStackTrace());
throw new RuntimeException();
}
編輯:除了雜亂,有與滲透例外另一個問題:後代碼修改你可能有一些不必要的throws
條文結束。我知道清除它們的唯一方法是通過試驗和錯誤:刪除它們,看看編譯器是否抱怨。顯然,如果你想保持代碼清潔,這是很煩人的。
更好的方法來處理它是以不必經常拋出異常的方式編寫代碼。 – lifetimes
同意。我通常不會聲明許多新定義的例外。我主要關心第三方和Java異常。 – H2ONaCl
@ user1394965是的,你的代碼不應該「不斷地」拋出異常。但是,這與例外是否可能是非常不同的問題。涉及IO操作或阻塞方法的任何事情都可能被無法避免的異常處理所困擾。 –