如何在不引发 Java 异常的情况下从 try/catch 块中脱离出来

2022-08-31 14:10:51

我需要一种方法来打破尝试/捕获块的中间,而不会引发异常。类似于中断并继续循环的内容。这可能吗?

我一直在通过抛出一个自定义异常(将其命名为“BreakContinueException”)来获得奇怪的经历,该异常在其捕获处理程序中没有任何作用。我敢肯定这是非常扭曲的。

那么,我不知道任何直接的解决方案吗?


答案 1

正确的方法可能是通过将 try-catch 块放在单独的方法中来分解该方法,并使用 return 语句:

public void someMethod() {
    try {
        ...
        if (condition)
            return;
        ...
    } catch (SomeException e) {
        ...
    }
}

如果代码涉及许多局部变量,您也可以考虑使用来自标记块的,如 Stephen C 所建议的那样:break

label: try {
    ...
    if (condition)
        break label;
    ...
} catch (SomeException e) {
    ...
}

答案 2

您始终可以使用 from 循环构造或 aioobies 答案中指定的标记来执行此操作。breakbreak

public static void main(String[] args) {
    do {
        try {
            // code..
            if (condition)
                break;
            // more code...
        } catch (Exception e) {

        }
    } while (false);
}

推荐