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”。我想知道finally代码块执行的原因,即使异常不是通过使用catch子句来处理的。我想知道一个finally块的基本功能是什么。“finally”块的功能是什么?
因为这就是它设计的目的。无论是否引发'Exception',都会保证调用'finally'块。看看[The finally block](http://docs.oracle.com/javase/tutorial/essential/exceptions/finally.html)了解更多详情 – MadProgrammer
@ MadProgrammer-是它的一个很好的提示......我认为它是机制,我想确保我在想什么真的很幸福。 – Vbabey
我会用它来清理在该函数中使用的系统资源,如文件关闭,数据库连接关闭等,所以无论您的程序结束,正常还是异常,资源都将被释放。 – Adi