Java: у меня есть попытка, поймать и, наконец, в код Java, и я хочу, чтобы после попытки или ловить блок, наконец, не выполняется - PullRequest
1 голос
/ 01 апреля 2010

У меня следующий код

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 ]

5 голосов
/ 01 апреля 2010
System.exit(0);
2 голосов
/ 01 апреля 2010

Если вы хотите, чтобы что-то не выполнялось в блоке "finally" - не помещайте его в "finally". Наконец, выполняется всегда (хорошо, за исключением нескольких случаев, упомянутых другими). ​​

0 голосов
/ 01 апреля 2010

finally предназначено для выполнения независимо от того, происходит ли исключение, точка. Этого нельзя избежать, кроме как прибегнуть к сомнительной тактике (как сказал там Иоахим).

Если код, который вы имеете в блоке finally, не предназначен для выполнения каждый раз, не используйте конструкцию finally; Вместо этого используйте простую конструкцию if

0 голосов
/ 01 апреля 2010

Использовать логический флаг:

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");
            }
        }
    }
}
0 голосов
/ 01 апреля 2010

Наконец-то вставьте код в 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");
      }
    }
  }
}
0 голосов
/ 01 апреля 2010
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");
    }
  }
}
0 голосов
/ 01 апреля 2010

Вам необходимо выключить JVM, позвонив exit как:

System.exit(exit_status);

Из документов Java :

Если JVM выходит из во время выполнения кода try или catch, тогда блок finally может не выполняться. Аналогично, если поток, выполняющий код try или catch, прерывается или уничтожается, блок finally может не выполняться, даже если приложение в целом продолжается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...