【发布时间】:2013-08-17 01:37:36
【问题描述】:
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");
}
}
我使用上面的代码来了解finally 块的机制。在这种情况下,我观察到即使没有那个 catch 块,finally 块也会执行并显示发生了异常。但我观察到的不同之处在于,当不使用 catch 块时,不会打印“End main”。我想知道即使没有使用 catch 子句处理异常,finally 块也会执行的原因。我想知道 finally 块的基本功能是什么。
【问题讨论】:
-
因为这就是它的设计目的。无论是否引发
Exception,都保证会调用finally块。更多详情请关注The finally block -
@MadProgrammer-是的,这是一个很好的提示......我认为这是机制,我想确保我所想的是真正发生的事情。
-
我会用它来清理在该函数中使用的系统资源,如文件关闭、数据库连接关闭等,因此无论您的程序以何种方式结束,正常或异常,资源都将是释放。