Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从试块跳到最终块_Java - Fatal编程技术网

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.
}