Java 从试块跳到最终块
我正在努力做到以下几点:Java 从试块跳到最终块,java,Java,我正在努力做到以下几点: String txt = "begin\n"; try{ // some stuff if(some condition) JUMP TO FINALLY CODE // some other stuff } finally { String txt += "end\n"; return txt; } 有没有一种方法可以在不引发异常的情况下实现跳转到FINALLY code(在我看来引发异常看起来并
String txt = "begin\n";
try{
// some stuff
if(some condition)
JUMP TO FINALLY CODE
// some other stuff
} finally {
String txt += "end\n";
return txt;
}
有没有一种方法可以在不引发异常的情况下实现
跳转到FINALLY code
(在我看来引发异常看起来并不干净)是的,一种方法就是从这样的方法中返回
String txt = "begin\n";
try{
// some stuff
if(some condition)
return;
// some other stuff
} finally {
String txt += "end\n";
}
不需要任何方法跳转到finally
,因为这里总是finally
块执行。是否存在异常
如果不想执行下面的代码行,可以使用返回
try {
if(isThisShouldReturn()){
return; // when if satisfied will return from try
} else {
// do the stuff
}
}finally {
System.out.println("come to finally");
}
我的方法是否定这个条件:
String txt = "begin\n";
try{
// some stuff
if(!someCondition) {
// some other stuff
}
} finally {
String txt += "end\n";
}
这将是您示例的预期行为。我猜return和抛出exception是从try块到达finally块的唯一两种方法。您需要使用一个块标签和一个break;比如:
end_try: try {
...
break end_try;
...
} finally {
...
}
或:
//从try块或..引发异常。。
//使用回电:
try
{
if(true condition)
{
return;
}
else
{
//false condition do work....
}
}
finally
{
//always executed.
}
嗯,最后你会错过之后的部分。运行finally
代码块后,该方法将停止。Dmitry的观点很好,但是如果if
条件中的返回
,跳转到finally代码,对我来说没问题!小技巧:此代码出现在toString()
方法中。如果我想返回finally
块中的内容,该怎么办?如果
,是否会放弃中的返回?在任何情况下,读者都看不清楚…@sol4me我很困惑让我们假设如果方法返回类型为void,那么它将如何工作?@Backslash36-无论您在finall块中返回什么,都将返回。因此,if
条件的值不会返回。基本解决方案:如果(!some condition){//all after statements},那么它会自动跳转到最后,然后他应该将其他代码封装到else分支中。我在try块中有许多if,我希望保持代码的可读性。return关键字应该可以做到这一点@Ruchitra我很困惑,假设方法返回类型为void,那么它将如何工作?@VikasVerma返回类型在这里没有考虑。您可以在方法return type中使用return
关键字作为void。只需尝试。public void tryThis(){boolean status=true;尝试{if(status){System.out.println(status);return;}否则{//do this}System.out.println(status);}最后{System.out.println(“终于来了”);}
@VikasVerma没有人想纠正无意义的代码。代码的含义与您编写代码的方式有关。在这种情况下没有意义。@VikasVerma抱歉,没有看到。您在我写答案时写了您的评论。@Vikas Verma答案是正确的,为什么您否决了它?如果您愿意,您可以回答…@VikasVerma-没有人要求您将该答案作为注释写入。不,不是。是否存在异常最终阻止执行
try
{
if(true condition)
{
return;
}
else
{
//false condition do work....
}
}
finally
{
//always executed.
}