当前位置: 首页 > 面试题库 >

我可以在同一catch子句中捕获多个Java异常吗?

雍光远
2023-03-14
问题内容

在Java中,我想做这样的事情:

try {
    ...     
} catch (/* code to catch IllegalArgumentException, SecurityException, 
            IllegalAccessException, and NoSuchFieldException at the same time */) {
   someCode();
}

…代替:

try {
    ...     
} catch (IllegalArgumentException e) {
    someCode();
} catch (SecurityException e) {
    someCode();
} catch (IllegalAccessException e) {
    someCode();
} catch (NoSuchFieldException e) {
    someCode();
}

有什么办法吗?


问题答案:

从Java 7开始,这已经成为可能。多捕获块的语法为:

try { 
  ...
} catch (IOException | SQLException ex) { 
  ...
}

但是请记住,如果所有异常都属于同一类层次结构,则可以简单地捕获该基本异常类型。

还要注意,如果从ExceptionA直接或间接继承了ExceptionB,则不能在同一块中同时捕获ExceptionA和ExceptionB。编译器会抱怨:

Alternatives in a multi-catch statement cannot be related by subclassing
  Alternative ExceptionB is a subclass of alternative ExceptionA


 类似资料:
  • 问题内容: 我需要捕获两个异常,因为它们需要相同的处理逻辑。我想做类似的事情: 是否可以避免在每个catch块中重复处理程序代码? 问题答案: Java 7及更高版本 从Java 7开始,支持多异常捕获。 语法为: 的静态类型是列出的异常中最特殊的通用超类型。有一个很好的功能,如果您将其重新抛出,编译器就会知道只能抛出列出的异常之一。 Java 6及更早版本 在Java 7之前,有多种方法可以解决

  • 本文向大家介绍是否可以在单个catch块中捕获多个Java异常?,包括了是否可以在单个catch块中捕获多个Java异常?的使用技巧和注意事项,需要的朋友参考一下 例外是程序执行期间发生的问题(运行时错误)。发生异常时,程序会突然终止,并且生成异常的行之后的代码将永远不会执行。 代码中有多个异常 在Java 7之前,只要我们有一个可能会生成多个异常的代码,并且如果您需要专门处理该代码,则应在一次尝

  • 大家好!我只是一个学生和完全初学者学习Java。我遇到过这样的问题:“可以被替换为multi-catch或几个catch子句来捕获特定的异常”,在部分catch(Exception ex)的图像中,它有黄色的下划线颜色,这给了我一个错误。我想插入数据到我的数据库,但它没有插入,因为这个错误。正如您在我的代码中所看到的,我已经尝试打印数据,并且都很成功。能不能请谁来开导一下,帮帮我,我到底做错了什么

  • 问题内容: 我想一个更清洁的方式来获得以下功能,以捕捉和在一个块: 有什么办法吗?还是我必须分开抓住它们? 并具有一个共享的基类,但它们也与其他我要介绍的类型共享它,因此我不能只抓住基类。 问题答案: 更新: 从PHP 7.1开始,此功能可用。 语法为: 文件:https://www.php.net/manual/en/language.exceptions.php#example-287 RFC

  • 我正在做一个3D阵列项目,我需要测试一个细胞周围的每个细胞。但是,如果单元位于数组的边缘,则在数组之外测试单元将抛出越界异常。我想用catch语句来解决这个问题,但是编写一个try-and-catch来测试每个块需要非常大量的代码(3D数组中一个单元周围有8个单元)。有没有一种方法可以用一次捕捉多次“尝试”,然后继续它停止的地方?例如,如果tester方法测试一个越界单元格,我需要它不仅捕获,而且

  • 在尝试我在方法中发现的多捕获特性时,一切都按预期正常工作。