java - 异常处理 Try-catch : What happens if var 1 , 2 和 3 为 false

标签 java exception try-catch runtime-error

我需要跟踪以下代码。会发生什么? 我已经走到这一步了...

让我们开始(现在尝试 f) F 开始下一次抛出 Exc1,因为 var1 = false 现在我要返回到 main 中尝试并转到方法 d 吗?

void main() {
    println("Let's start");
    try {
        f();
        d();
    } catch (Ex1 ex) {
        println("main caught Ex1");
    } catch (Ex3 ex) {
        println("main caught Ex3");
    } finally {
        println("main finally");
    }
    println("main end");
}

void f() {
    println("F begins");
    try {
        if (var1) {
            d();
        } else {
            throw new Ex1();
        }
    } catch (Ex2 ex) {
        println("f caught Ex2");
    }
    println("a end");
}

void d() {
    println("d begin");
    try {
        if (var2) throw new Ex2();
        if (var3) throw new Ex3();
    } catch (Ex3 ex) {
        println("d caught ex3");
    } finally {
        println("d finally");
    }
    println("d end");
}

最佳答案

在此代码中:

try {
    f();
    d();
} catch (Ex1 ex) {
    println("main caught Ex1");
} catch (Ex3 ex) {
    println("main caught Ex3");
} finally {
    println("main finally");
}

如果f()抛出异常,try block 将退出。无论是否捕获异常,main()不会调用d()。如果有catch block 捕获异常,则会执行该异常,然后执行finally block ;否则,finally block 将被执行,然后再次抛出异常。但在这两种情况下,d()都不会被调用。

关于java - 异常处理 Try-catch : What happens if var 1 , 2 和 3 为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21788777/

相关文章:

java - 匹配对的正则表达式

java - 如何为Java ESAPI添加标签白名单

exception - 无法在 listenTCP 函数调用的委托(delegate)中抛出异常

java - GWT 中的多个 javascript 异常处理

java - 在 do while 循环中尝试 catch

c++ - 在 C++ 中使用两个文件流处理异常

java - 为什么我的弹力球程序在第 5 次弹跳后没有停止?

java - 使用java从下拉列表中选择一个元素

c# - 让程序在每次引发异常时发出蜂鸣声

javascript - 比较 JavaScript 中处理异常的实现