📜  Java异常处理中的finally

📅  最后修改于: 2020-09-26 07:04:32             🧑  作者: Mango

Java final

Java finally块是用于执行重要代码(例如关闭连接,流等)的块。

无论是否处理异常,总是执行Java finally块。

Java最终块遵循try或catch块。


注意:如果不处理异常,则在终止程序之前,JVM将执行finally块(如果有)。

为什么最后使用Java

  • Java中的finally块可用于放置“清理”代码,例如关闭文件,关闭连接等。

最终使用Java

让我们看看可以使用java finally块的不同情况。

情况1

让我们看看不发生异常的java最终示例。

class TestFinallyBlock{
  public static void main(String args[]){
  try{
   int data=25/5;
   System.out.println(data);
  }
  catch(NullPointerException e){System.out.println(e);}
  finally{System.out.println("finally block is always executed");}
  System.out.println("rest of the code...");
  }
}
Output:5
       finally block is always executed
       rest of the code...

情况二

让我们看一下java最终示例,其中发生异常且未处理异常。

class TestFinallyBlock1{
  public static void main(String args[]){
  try{
   int data=25/0;
   System.out.println(data);
  }
  catch(NullPointerException e){System.out.println(e);}
  finally{System.out.println("finally block is always executed");}
  System.out.println("rest of the code...");
  }
}
Output:finally block is always executed
       Exception in thread main java.lang.ArithmeticException:/ by zero

情况3

让我们看一下java最终示例,其中发生并处理了异常。

public class TestFinallyBlock2{
  public static void main(String args[]){
  try{
   int data=25/0;
   System.out.println(data);
  }
  catch(ArithmeticException e){System.out.println(e);}
  finally{System.out.println("finally block is always executed");}
  System.out.println("rest of the code...");
  }
}
Output:Exception in thread main java.lang.ArithmeticException:/ by zero
       finally block is always executed
       rest of the code...

规则:对于每个try块,可以有零个或多个catch块,但只有一个finally块。
注意:如果程序退出(通过调用System.exit()或导致导致进程中止的致命错误),则不会执行finally块。