说明
在java的异常处理中,如果几个异常的处理完全相同,那么可以考虑在一个catch语句中捕获。但要注意,用一个catch捕获的几个异常类中,一个类不能是另外一个的子类,否则会编译报错。因为如果有父子关系,那么其中有的异常在catch语句中就是多余的
示例
在一个catch语句中捕获两个没有父子关系异常
在一个catch语句中捕获了IOException和InterruptedException两个异常,且两者之间没有父子关系,这是允许的。
try {
// body
} catch (IOException | InterruptedException e) {
// do something
} finally {
// do antother thing
}
IOException的层级:
InterruptedException的层级:
在一个catch语句中捕获两个有父子关系的异常,编译报错
但如果换成下面这样,同时捕获IOException 和CharConversionException 两个异常,就会编译报错,因为CharConversionException 是IOException 的子类:
try {
// body
} catch (IOException | CharConversionException e) {
// do something
} finally {
// do antother thing
}
CharConversionException的层级: