首页 > 解决方案 > 如何仅捕获异常类型

问题描述

有没有办法只基于异常类型进行捕获,而不使用标识符,就像 Python 那样。当我尝试以下操作时,编译器抱怨缺少标识符:

try {
    doSthThatThrows();
} catch (IOException) {
    handleIOException();
} catch (IllegalArgumentException) {
    handleArgumentException();
}

…报告此错误:

Main.java:19: error: <identifier> expected
    } catch(IllegalArgumentException)
                                    ^
1 error

标签: javaexception-handlingtry-catch

解决方案


在纯 Java 中,名称必须有一个标识符,并且不能使用下划线作为名称(避免在Groovy中提供名称/标识符的常用方法)。

请参阅 Oracle 的文章,Catching Multiple Exception Types and Rethrowing Exceptions with Improvement Type Checking

更改您的代码以命名引发异常的变量。例如,e在下面的代码中。请注意,您可以在catch语句中循环使用相同的变量名称。

try {
    doSthThatThrows();
} catch ( IOException e ) {
    …
} catch ( IllegalArgumentException e ) {
    …
}

推荐阅读