在一个catch块中使用多个异常有什么好处?

AAa*_*Aaa 9 java java-7

我们都听说过在Java 7中我们可以写:

try {
   //something with files and IO
} catch (FileNotFoundException | IOException ex) {
    ex.printStackTrace();
    System.out.println("It's can't copy file");
}
Run Code Online (Sandbox Code Playgroud)

代替

try {
   //something with files and IO
} catch (FileNotFoundException wx) {
    ex.printStackTrace();
} catch (IOException ex) {
   ex.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

但是,除了更短的代码之外,它还有什么好处呢?
即使我们希望在每个catch块中完成相同的操作,我们也可以:

  1. 只捕获IOException,因为FileNotFoundException是一个子类型.
    要么
  2. 如果一个异常不是另一个异常的子类型,我们可以编写一些handleException()方法并在每个catch块中调用它.

那么,此功能仅用于更干净的代码或其他任何内容吗?

谢谢.

eri*_*son 10

这不是为了使代码看起来更干净并保存击键.这些都是附带福利.

重复会导致不一致和错误.因此,通过创建不需要重复的语法,可以避免真正的错误.这就是DRY背后的动机 - 不是漂亮的代码,写得更快.

  • 虽然人们可以争辩说清洁代码可以消除"不一致和错误". (2认同)