首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Try-Catch混淆

Java Try-Catch混淆
EN

Stack Overflow用户
提问于 2018-09-26 05:15:13
回答 1查看 57关注 0票数 0

我正在为OCA考试做准备,在解决有关Java异常的问题时,我发现了一个冲突点。下面是引起我困惑的代码:

代码语言:javascript
复制
public class StringOps {
    public static void main(String[] args) {
        System.out.print("a");
        try {
            System.out.print("b");
            throw new IllegalArgumentException();
        } catch (IllegalArgumentException e) {
            System.out.print("c");
            throw new RuntimeException("1");
        } catch (RuntimeException e) {
            System.out.print("d");
            throw new RuntimeException("2");
        } finally {
            System.out.print("e");
            throw new RuntimeException("3");
        }
    }
}

此代码输出:a-> b -> c -> e

但我不明白为什么?我以为它会输出:a-> b -> c -> d -> e

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2018-09-26 05:54:22

这是因为即使在第一个catch块中抛出了一个新的RuntimeException,这个新的RuntimeException仍然受第一个catch块中的子句的约束。

如果你想尝试多个捕获,你必须嵌套你的/。控制流始终是:

代码语言:javascript
复制
 try --> catch --> finally.

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52506802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档