2014-08-27 22 views
41

雖然讀通過我的代碼,我發現我的IDE中列出以下消息的警告:在try塊「Catch分支是相同的」但是仍然需要我去抓住它

報告相同的閉鎖段JDK 7下。quickfix可用於將部分摺疊爲多部分。

而且還規定,該警報拋出JDK 7+

的try塊如下:拆卸時(即扔的特別警告catch塊)

try { 
    FileInputStream e = new FileInputStream("outings.ser"); 
    ObjectInputStream inputStream = new ObjectInputStream(e); 
    return (ArrayList)inputStream.readObject(); 
} catch (FileNotFoundException var3) { 
    var3.printStackTrace(); 
} catch (ClassNotFoundException var5) { 
    var5.printStackTrace(); 
} catch (IOException ex){ 
    ex.printStackTrace(); 
} 

但是:

catch (ClassNotFoundException var5) { 
    var5.printStackTrace(); 
} catch (IOException ex){ 
    ex.printStackTrace(); 
} 

我仍然會在出現錯誤:

ObjectInputStream inputStream = new ObjectInputStream(e); 
return (ArrayList)inputStream.readObject(); 

我失去了一些東西很明顯,我還沒有想出這麼遠?

回答

93

所以,因爲我看到的IntelliJ中相同的警告(我想你正在使用的IntelliJ太),爲什麼不能讓Alt鍵 + 輸入(或選項 + 返回如果你比較)告訴你它是什麼意思?

可以摺疊異常分支,如果他們是相同的,並且與多抓語法,你會與做同樣的事情作爲一個catch語句風你的三個:

try { 
    FileInputStream e = new FileInputStream("outings.ser"); 
    ObjectInputStream inputStream = new ObjectInputStream(e); 
    return (ArrayList)inputStream.readObject(); 
} catch (ClassNotFoundException | IOException var3) { 
    var3.printStackTrace(); 
} 
return null; 
+2

很重要請注意,多捕獲的類型必須是不相交的。 +1以正確使用多捕獲語句。 – 2015-06-28 01:26:44

相關問題