“捕捉分支是相同的”,但仍然需要我去捕捉它
虽然通过我的代码阅读,我注意到我的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;