📜  finally 关键字 (1)

📅  最后修改于: 2023-12-03 15:30:45.785000             🧑  作者: Mango

介绍

finally是Java中的关键字之一,它用于定义包裹在try-catch块后面的代码块。finally块中的代码无论try块中是否抛出异常,都会被执行。

语法

finally关键字后跟着大括号括起来的代码块,即:

try {
    // some code that might throw an exception
} catch (Exception e) {
    // handle the exception
} finally {
    // some code that always executes, regardless of whether an exception was thrown or caught
}
特点

finally块中的代码始终都会被执行,无论try块中是否有异常抛出,还是异常被捕获和处理。这是由Java虚拟机(JVM)强制实施的。

此外,finally块还有以下特点:

  • finally块中的代码总是接在try块和catch块之后执行,无论try块或catch块中是否有return语句。
  • 如果try块或catch块中有System.exit()或其他会使程序停止的代码,finally块中的代码将不会被执行。
  • finally块可以用来释放资源,比如数据库连接,文件句柄等等。
示例

如果try块中的代码可以成功运行,那么finally块的代码也会被执行:

try {
    // some code that might throw an exception
} catch (Exception e) {
    // handle the exception
} finally {
  System.out.println("Finally block is always executed!");
}

如果try块中的代码抛出了一个异常,异常会被捕获并处理,但是finally块中的代码仍然会被执行:

try {
    int result = 10 / 0; //try块中的代码抛出一个异常
} catch (ArithmeticException e) {
    System.out.println("Caught ArithmeticException!");
} finally {
  System.out.println("Finally block is always executed!");
}

输出结果为:

Caught ArithmeticException!
Finally block is always executed!

在这个示例中,我们捕获了一个ArithmeticException异常,但是finally块中的代码仍然被执行了。

总结

finally关键字用于定义在try块后执行的代码块,始终都会被执行,不管try块中是否有异常发生,还是异常是否被处理。 finally块通常用于释放资源,比如关闭文件,数据库连接等。在使用finally块时,务必小心,以确保不会出现潜在的资源泄漏或其他问题。