0

不知道这是否已经得到回答,但是。

我知道在 java 中有 try、catch 和 finally 块,但是只有在 try 没有错误/异常时才调用它吗?

目前,在说明需要运行的命令之后,我将布尔值设置为 true,并且在 try 和 catch 块之后,程序检查布尔值是否为 true。

我很确定有一种更简单的方法,不胜感激!

4

2 回答 2

3

只需将您的代码放在块之后try...catch并返回catch

boolean example() {
    try {
        //dostuff
    } catch (Exception ex) {
        return false;
    }
    return true;
}

如果您将 放在块return true的末尾,这也将起作用,try因为代码将跳转到catchon 错误而不执行try.

void example() {
    try {
        //do some stuff that may throw an exception
        //do stuff that should only be done if no exception is thrown
    } catch (Exception ex) {
        throw new RuntimeException(ex);
    }
}
于 2013-04-26T08:45:02.073 回答
2

不,只有在没有引发异常时才调用块。

catch如果有异常,则调用该块,finally无论如何都会调用该块。

如前所述,您可以通过以下方式模拟这样的野兽:

bool completed = false;
try {
    doSomeStuff();
    completed = true;
} catch (Exception ex) {
    handleException();
} finally {
    regularFinallyHandling();
    if (completed) {
        thisIsTheThingYouWant();
    }
}

但是提供此功能的语言本身并没有内置任何东西。

于 2013-04-26T08:44:06.490 回答