3

可能重复:
在 Java 7 多捕获块中,捕获的异常的类型是什么?

在 Java 的新 multi-catch 构造中,必须为异常变量假设什么异常类型:

try{
   //-- do error prone stuff
}
catch (ExceptionTypeA | ExceptionTypeB e) {
   //-- e.methodA() or e.methodB() ?
}

如果ExceptionTypeA并且ExceptionTypeB是自定义实用程序方法的自定义异常,那么,e编写代码时是什么类型?,可以调用哪些方法e

4

1 回答 1

4

e 的类型将是 ExceptionA 和 ExceptionB 最接近的父类型。如果他们只是扩展异常,那么类型将是异常。

如果您为不同的异常情况调用不同的方法,例如methodA if ExceptionAmethodB for ExceptionB您不应该使用 multi-catch。如果 ExceptionA 和 ExceptionB 都扩展了一个公共超类型并覆盖了其中一个方法,那么您可以使用它。

于 2012-12-15T08:07:07.287 回答