查看原文
其他

Java教程-Java finally块

点击关注👉 鸭哥聊Java 2023-09-01

整理: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..."); } }


输出:



程序员技术交流群扫码进群记得备注:城市+昵称+技术方向 ▲长按扫描最近技术热文

我就知道你会点赞+“在看”



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存