2014-08-27 103 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

相关问题