Java:我已尝试,捕获并最终在java代码中,我想在try或catch块之后最终不执行

时间:2010-04-01 08:40:12

标签: java exception-handling

我有以下代码

public class TEST
{
  public static void main(String arg[]){
    try
    {
      System.out.println("execute try");
      //what should I write hear that finally does not run.
    }
    catch (Exception e){
      System.out.println(e);
    }
    finally{
      System.out.println("execute finally");
    }
  }
}

我应该在最终不运行的try或catch块中写什么。任何想法?

7 个答案:

答案 0 :(得分:5)

System.exit(0);

答案 1 :(得分:2)

如果你想要一些不在“finally”块中运行的东西 - 不要把它放在“finally”中。最后总是运行(好吧,除了像其他人提到的一些案例)。

答案 2 :(得分:0)

您需要通过调用JVM来关闭exit

System.exit(exit_status);

来自Java docs

  

如果在执行try或catch代码时JVM 退出,则finally块可能执行。同样,如果执行try或catch代码的线程被中断或终止,则即使应用程序作为一个整体继续,finally块也可能无法执行。

答案 3 :(得分:0)

最终意味着无论异常是否发生,都要执行。 除非采用可疑的策略(正如约阿希姆所说的那样),否则无法避免。

如果您在finally块中的代码不是每次都要执行,请不要使用finally构造;使用简单的if-construct代替

答案 4 :(得分:-1)

public class TEST
{
  public static void main(String arg[]){
    bool exitFinally  = false;
    try
    {
      System.out.println("execute try");
      //what should I write hear that finally does not run.
    }
    catch (Exception e){
      System.out.println(e);
    }
    finally{

        if(exitFinally)
            return;

      System.out.println("execute finally");
    }
  }
}

答案 5 :(得分:-1)

将代码最终放入if。

public class TEST
{
  public static void main(String arg[]){
    boolean b = true;
    try
    {
      System.out.println("execute try");
      if (something()) b = false;
    }
    catch (Exception e){
      System.out.println(e);
    }
    finally{
      if (b){
        System.out.println("execute finally");
      }
    }
  }
}

答案 6 :(得分:-1)

使用布尔标志:

public class TEST
{
    public static void main(String arg[]){
        boolean success=false;
        try
        {
            System.out.println("execute try");
            //what should I write hear that finally does not run.
            success=true;
        }
        catch (Exception e){
            System.out.println(e);
        }
        finally{
            if (!success)
            {
                System.out.println("execute finally");
            }
        }
    }
}