可能重复:
In a Java 7 multicatch block what is the type of the caught exception?
Java的新多捕获构造中的异常变量必须采用什么异常类型:
try{
//-- do error prone stuff
}
catch (ExceptionTypeA | ExceptionTypeB e) {
//-- e.methodA() or e.methodB() ?
}
如果ExceptionTypeA
和ExceptionTypeB
是使用自定义实用程序方法的自定义异常,那么,在编写代码时e
是什么类型的?,e
可以调用哪些方法?
答案 0 :(得分:4)
e的类型将是ExceptionA和ExceptionB中最接近的父类型。如果他们只是扩展Exception,那么type将是Exception。
如果要为methodA if ExceptionA
和methodB for ExceptionB
之类的不同异常情况调用不同的方法,则不应使用multi-catch。如果ExceptionA和ExceptionB都扩展了一个常见的超类型并覆盖其中一个方法,那么你可以使用它。