Bas*_*usa 54 java try-catch-finally
我需要一种方法来打破try/catch块的中间而不抛出异常.类似于break并继续for循环的东西.这可能吗?
关于抛出一个自定义异常(命名为"BreakContinueException"),我一直在做一些奇怪的事情,这个异常在catch处理程序中什么都不做.我确定这很扭曲.
那么,我不知道任何直接的解决方案?
aio*_*obe 47
正确的方法可能是通过将try-catch块放在单独的方法中来分解方法,并使用return语句:
public void someMethod() {
try {
...
if (condition)
return;
...
} catch (SomeException e) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
如果代码涉及许多局部变量,您也可以考虑使用break
标记块中的a,如Stephen C所建议的:
label: try {
...
if (condition)
break label;
...
} catch (SomeException e) {
...
}
Run Code Online (Sandbox Code Playgroud)
dac*_*cwe 27
你总是可以使用break
循环结构或break
aioobies answer中指定的标签来完成它.
public static void main(String[] args) {
do {
try {
// code..
if (condition)
break;
// more code...
} catch (Exception e) {
}
} while (false);
}
Run Code Online (Sandbox Code Playgroud)
Ste*_*n C 13
各种方式:
return
break
或者continue
在循环中break
在标签声明中标记(参见@ aioobe的例子)break
在switch语句中....
System.exit()
......虽然这可能不是你的意思.在我看来,如果你只想摆脱尝试/捕获,"打破标签"是最自然(最少扭曲)的方式.但是从未遇到过Java构造的新手Java程序员可能会感到困惑.
但是虽然标签很模糊,但在我看来,将代码包装do ... while (false)
在一起以便你可以使用a break
是一个更糟糕的想法.这会使非新手和初学者感到困惑.新手(和非新手!)最好学习标签语句.
顺便说一句,return
在需要突破的情况下工作finally
.但是你应该避免return
在一个finally
块中进行,因为语义有点令人困惑,并且容易引起读者头疼.
归档时间: |
|
查看次数: |
85667 次 |
最近记录: |