📅  最后修改于: 2020-09-26 07:04:32             🧑  作者: Mango
Java finally块是用于执行重要代码(例如关闭连接,流等)的块。
无论是否处理异常,总是执行Java finally块。
Java最终块遵循try或catch块。
注意:如果不处理异常,则在终止程序之前,JVM将执行finally块(如果有)。
让我们看看可以使用java finally块的不同情况。
让我们看看不发生异常的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
让我们看一下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块。