java在一个catch块中使用多个异常的优势是什么?
我们都听说,在Java 7中,我们可以编写:
try {
//something with files and IO
} catch (FileNotFoundException | IOException ex) {
ex.printStackTrace();
System.out.println("It's can't copy file");
}
而不是
try {
//something with files and IO
} catch (FileNotFoundException wx) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
但是,除了更短的代码,它还有什么真正的好处呢
即使我们希望在每个catch块中执行相同的操作,我们也可以:
- 仅捕获IOException,因为FileNotFoundException是子类型
或 - 若一个异常不是另一个异常的子类型,我们可以编写一些handleException()方法并在每个catch块中调用它李>
那么,这个特性是只用于更干净的代码还是其他用途
谢谢
# 1 楼答案
这是为了更干净的代码。。但这是非常宝贵的。在某些情况下,您可能会抛出4或5个异常,如果您想在所有情况下都执行相同的操作(通常是这样),则会减少大量代码
这使得它更具可读性,也更易于测试。这本身就很有价值
# 2 楼答案
这个想法相当于以下两者之间的区别:
及
它只是更简短、更干净的代码
# 3 楼答案
这并不是为了让代码看起来更干净和节省按键。这些都是附带福利
重复会导致不一致和错误。因此,通过创建一种不需要重复的语法,可以避免真正的错误。这就是编写速度更快的枯燥而不漂亮的代码背后的动机
# 4 楼答案
代码越短,维护代码就越少——这不是什么小优势。是的,我可以编写异常处理方法,但现在我不经常这样做,例如,只有当异常被抛出到代码的不同位置时
# 5 楼答案
是的,它主要用于更干净的代码