“捕捉分支是相同的”,但仍然需要我去捕捉它

虽然通过我的代码阅读,我注意到我的IDE列出警告与以下消息:

在JDK 7中的try块中报告相同的catch部分。quickfix可用于将部分折叠成多catch部分。

还指定为JDK 7+引发此警告

try块如下:

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块):

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

我仍然会在以下错误:

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

我是否错过了目前为止还没有弄清楚的东西?

所以,因为我在IntelliJ中看到了同样的警告(我想你也使用了IntelliJ),为什么不让Alt + Enter (或者如果你愿意的话, Option + Return )告诉你它是什么意思?

如果exception分支是相同的,那么可以折叠exception分支,并且使用multi-catch语法,您将得到一个与您的三个分支完全相同的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;