其他
Java教程-Java finally块
整理:Java面试那些事儿
Java finally块是一个用于执行重要代码的块,例如关闭连接等。
Java finally块无论是否处理异常都会被执行。因此,它包含了所有需要被执行的必要语句,无论是否发生异常。
finally块跟在try-catch块之后。
finally块的流程图
为什么使用Java finally块?
Java中的finally块可用于放置“清理”代码,例如关闭文件、关闭连接等。
可以将需要被打印的重要语句放置在finally块中。
Java finally的用法
让我们看看可以使用Java finally块的不同情况。
情况1:没有发生异常
看下面的例子,Java程序没有抛出任何异常,在try块之后执行了finally块。
TestFinallyBlock.java
class TestFinallyBlock {
public static void main(String args[]){
try{
//下面的代码不抛出任何异常
int data=25/5;
System.out.println(data);
}
//catch不会被执行
catch(NullPointerException e){
System.out.println(e);
}
//不管异常发生与否都执行
finally {
System.out.println("finally block is always executed");
}
System.out.println("rest of phe code...");
}
}
输出:
情况2:发生异常但未被catch块处理
让我们看下面的例子。这里的代码抛出一个异常,但是catch块无法处理它。尽管如此,try块之后仍然执行了finally块,然后程序异常终止。
TestFinallyBlock1.java
public class TestFinallyBlock1{
public static void main(String args[]){
try {
System.out.println("Inside the try block");
//下面的代码抛出被零除异常
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...");
}
}
输出:
情况3:发生异常并且被catch块处理
示例:
让我们看下面的例子,Java代码抛出一个异常,catch块处理了该异常。然后,在try-catch块之后执行finally块。接着,其余的代码也正常执行
TestFinallyBlock2.java
public class TestFinallyBlock2{
public static void main(String args[]){
try {
System.out.println("Inside try block");
//下面的代码抛出被零除异常
int data=25/0;
System.out.println(data);
}
//处理算术异常/除以零异常
catch(ArithmeticException e){
System.out.println("Exception handled");
System.out.println(e);
}
//不管异常发生与否都执行
finally {
System.out.println("finally block is always executed");
}
System.out.println("rest of the code...");
}
}
输出:
我就知道你会点赞+“在看”