Java “a”的功能是什么;最后";块

Java “a”的功能是什么;最后";块,java,try-catch-finally,Java,Try Catch Finally,我使用上面的代码来理解finally块的机制。在本例中,我观察到的是,即使没有catch块,finally块也会执行,并显示发生了异常。但我观察到的区别是,当不使用挡块时,不会打印“End main”。我想知道为什么即使没有使用catch子句处理异常,finally块也会执行。我想知道finally块的基本功能是什么。finally块用于运行代码,而不管是否存在异常。最后总是对相关的try块执行 通常,finally用于关闭在try块中打开的资源。最后,这样做的原因是,无论是否有例外,我们都应该

我使用上面的代码来理解
finally
块的机制。在本例中,我观察到的是,即使没有catch块,finally块也会执行,并显示发生了异常。但我观察到的区别是,当不使用挡块时,不会打印“End main”。我想知道为什么即使没有使用catch子句处理异常,finally块也会执行。我想知道finally块的基本功能是什么。

finally块用于运行代码,而不管是否存在异常。最后总是对相关的try块执行

通常,finally用于关闭在try块中打开的资源。最后,这样做的原因是,无论是否有例外,我们都应该关闭该决议。但在Java7中,如果您使用try with resource作为自动关闭的资源,您真的不需要为此烦恼

在您的代码中,finally的相关性只是学习finally是如何工作的

最后,了解更多关于:

以及来自同一链接的注释:

重要:finally块是防止资源泄漏的关键工具 泄漏。关闭文件或以其他方式恢复资源时,请放置 finally块中的代码,以确保资源始终可用 恢复了

如果您使用java SE 7或更高版本,请考虑使用 在这些情况下尝试使用resources语句,它会自动 不再需要时释放系统资源


最后,不管是否存在异常,都使用块来运行代码。最后总是对相关的try块执行

通常,finally用于关闭在try块中打开的资源。最后,这样做的原因是,无论是否有例外,我们都应该关闭该决议。但在Java7中,如果您使用try with resource作为自动关闭的资源,您真的不需要为此烦恼

在您的代码中,finally的相关性只是学习finally是如何工作的

最后,了解更多关于:

以及来自同一链接的注释:

重要:finally块是防止资源泄漏的关键工具 泄漏。关闭文件或以其他方式恢复资源时,请放置 finally块中的代码,以确保资源始终可用 恢复了

如果您使用java SE 7或更高版本,请考虑使用 在这些情况下尝试使用resources语句,它会自动 不再需要时释放系统资源


无论在
try
catch
块上发生什么,
最终
原因都会确保*为您执行

*只有当当前
线程在
try
/
catch
块中运行时,如果您中断或终止该线程,则不会执行
finally


这里有一个更具体的问题。

无论在
try
catch
块上发生什么,
最终
原因都会确保*为您执行

*只有当当前
线程在
try
/
catch
块中运行时,如果您中断或终止该线程,则不会执行
finally

这里有一个更具体的。

来自:

当try块退出时,finally块始终执行。这确保即使发生意外异常,也会执行finally块。但最后,它不仅仅适用于异常处理——它允许程序员避免因返回、继续或中断而意外绕过清理代码。将清理代码放在finally块中始终是一种好的做法,即使在没有预期异常的情况下也是如此

因此,如果您必须保证执行某个操作,例如
somePrintWriter.close()
,但仍希望在此之前处理任何异常,则finally块将执行它。

来自:

当try块退出时,finally块始终执行。这确保即使发生意外异常,也会执行finally块。但最后,它不仅仅适用于异常处理——它允许程序员避免因返回、继续或中断而意外绕过清理代码。将清理代码放在finally块中始终是一种好的做法,即使在没有预期异常的情况下也是如此


因此,如果您必须保证执行某个操作,例如
somePrintWriter.close()
,但仍希望在此之前处理任何异常,最后一个块将执行它。

< P>或者在java中使用TestCcatch最后块或-Rest-Rand块来实现与C++中对象终结器类似的功能。p> 当它们用于异常处理时,
finally
语句块最重要的功能可能是关闭或释放在
try
块中执行代码期间打开或创建的资源


请注意,Java中存在对象终结器(以某种方式),但它们几乎不应该用于终结对象。。。奇怪吧

> Py>最后一个块或-Rest-Rand块,在java中使用,以实现C++中对象终结器的类似功能。p> 当它们用于异常处理时,
finally
语句块最重要的功能可能是关闭或释放在
try
块中执行代码期间打开或创建的资源


请注意,Java中存在对象终结器(以某种方式),但它们几乎不应该用于终结对象。。。奇怪吧

因为这就是它的设计目的。无论是否引发了
异常
最终都会
class Demo {
    public static void main(String args[]) {
        System.out.println("Start main");
        try {
            //exceptional code
            int x=43/0;
        } catch(ArithmeticException e) {
            e.printStackTrace();
        } finally {
            System.out.println("final code");
        }
        System.out.println("End main");
    }
}