java - 无法有效地使用 Java 中的 Multi Catch

标签 java exception try-catch numberformatexception multi-catch

<分区>

我真的很想使用 Java-1.7 的功能。此功能之一是“Multi-Catch”。目前我有以下代码

try {
    int Id = Integer.parseInt(idstr);

    TypeInfo tempTypeInfo = getTypeInfo(String.valueOf(Id));

    updateTotalCount(tempTypeInfo);
} catch (NumberFormatException numExcp) {
    numExcp.printStackTrace();
} catch (Exception exception) {
    exception.printStackTrace();
} 

我想从上面的代码中删除两个 catch block ,而是使用如下所示的单个 catch:

try {
    int Id = Integer.parseInt(idstr);

    TypeInfo tempTypeInfo = getTypeInfo(String.valueOf(Id));

    updateTotalCount(tempTypeInfo);
} catch (Exception | NumberFormatException ex) { // --> compile time error
    ex.printStackTrace();
} 

但是上面的代码给出了编译时错误:

"NumberFormatException" is already caught by the alternative Exception.

我理解上面的编译时错误,但是我的第一 block 代码的替换是什么。

最佳答案

NumberFormatExceptionException 的子类.说两个 catch block 应该具有相同的行为就像是说您没有对 NumberFormatException 进行任何特殊处理,只是对 进行相同的一般处理异常。在这种情况下,您可以省略它的 catch block 而只使用 catch Exception:

try {
    int Id = Integer.parseInt(idstr);

    TypeInfo tempTypeInfo = getTypeInfo(String.valueOf(Id));

    updateTotalCount(tempTypeInfo);
} catch (Exception exception) {
    exception.printStackTrace();
} 

关于java - 无法有效地使用 Java 中的 Multi Catch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32345287/

相关文章:

java - 返回里面试试

javascript - 如何从附加到 Puppeteer 页面的 pageerror 监听器捕获错误?

java - 有没有办法将flv文件嵌入Java表单?

java - Spring缓存不适用于子类中的重写方法

silverlight - 当我尝试获取值时,IsolatedStorageSettings 会抛出IsolatedStorageFileStream

java - JTable 使用数组字符串。这些数据在 try-catch 中

java - 无法在 Pentaho 数据集成(Kettle)中运行 spoon.bat 或任何其他批处理文件

java - 创建 Hadoop java 示例

java - java.net.SocketTimeoutException 中 "Connect timed out"和 "failed to connect to"之间的确切区别是什么?

java - 使用 RestTemplate 异常处理的 Spring 端点到端点