好吧,我犯了罪,我寫了太多這樣的代碼重構異常處理
try {
// my code
} catch (Exception ex) {
// doesn't matter
}
現在,我要清理/重構這個。
我正在使用NB 6.7,並且代碼完成在第一次寫入時工作正常,添加了所有異常類型等。一旦我完成了上述代碼,請不要給予更多幫助。
你知道一種說NB的方法嗎再次檢查所有異常類型
,並提出處理它們的建議
並再次執行代碼?
好吧,我犯了罪,我寫了太多這樣的代碼重構異常處理
try {
// my code
} catch (Exception ex) {
// doesn't matter
}
現在,我要清理/重構這個。
我正在使用NB 6.7,並且代碼完成在第一次寫入時工作正常,添加了所有異常類型等。一旦我完成了上述代碼,請不要給予更多幫助。
你知道一種說NB的方法嗎再次檢查所有異常類型
,並提出處理它們的建議
並再次執行代碼?
當你問如何處理異常的建議...
有沒有普遍接受的方式來處理它們。否則,你打賭java語言會隱含這種行爲。
異常有兩種存在形式,由設計:
在代碼(方法或代碼塊)的每個級別,代碼必須選擇在發生任何異常(除未經檢查的異常,可以完全忽略該處理)的情況下應該做什麼。這是一個變化的責任的一種選擇,沒有決定適用於所有情況:
Java語言讓你有特定語法使得更容易處理的例外,如特定異常的捕獲,隨後更普遍的...
通常情況下,你在你的架構考慮異常,做出一些設計決定。一些例子(以獨特的方式混合):
問題是,你的抓包處理程序「處理」所有的異常,所以不需要Netbeans顯示任何更多的提示。
如果你的異常處理程序已經是空的,並且你打算重構它們,你可以暫時刪除它們。
提示:自動格式化您的代碼,搜索try
並使用括號突出顯示來找到匹配的catch
塊。然後刪除所有的處理代碼。
之後,Netbeans將再次提出各種操作來處理可能出現的異常。注意:Netbeans的默認處理(即只是日誌記錄)並不總是最好的選擇。
我只是提供了Eclipse的做法,並希望它有點similiar與NetBeans:
您可以保存現有的異常處理代碼,將其粘貼到重構後。
編輯
湯姆關於RuntimeException的一個很好的註釋。所以程序應該更好的是這樣的:
這將保留運行您的異常處理例外(和子類型!)。
所以從
try {
Integer.parseInt("Force a RuntimeException");
myInputStream.close();
} catch (Exception oops) {
// catch both IOException and NumberFormatException
}
你去
try {
Integer.parseInt("Force a RuntimeException");
myInputStream.close();
} catch (IOException oops) {
// catch IOException
} catch (Exception oops) {
// catch NumberFormatException
}
(雖然你可以手動在這種情況下取代異常的NumberFormatException的,但它只是一個例子)
請注意,這對於任何'RuntimeException'都不起作用。 – 2010-01-15 11:14:50
PMD識別所有這些地方你有空catch
塊(PMD實際上做得更多)。它有NetBeans集成,所以試試看。
確定所有與空catch
塊的地方之後,你就必須要考慮每一個本身:
NullPointerException
,請添加null
檢查。
請注意,這將不適用於任何'RuntimeException's。 – 2010-01-15 11:11:09