Vba*_*bey 1 java try-catch-finally
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");
}
}
Run Code Online (Sandbox Code Playgroud)
我使用上面的代码来理解finally块的机制.在这种情况下,我观察到的是,即使没有该catch块,finally块也会执行并显示发生的异常.但我观察到的差异是,当不使用catch块时,不会打印"End main".我想知道finally块执行的原因,即使未使用catch子句处理异常.我想知道finally块的基本功能是什么.
最后,块用于运行代码,而不管是否存在异常.最后总是执行相关的try块.
通常最后用于关闭try块中打开的资源.最后这样做的原因是,无论是否有例外,我们都应该关闭这个例子.但是在Java 7中,如果您对AutoCloseable资源使用try with resource,那么您真的不需要为此烦恼.
在你的代码中,finally的相关性除了学习最终如何工作之外什么也没有.
了解有关finally的更多信息:http://docs.oracle.com/javase/tutorial/essential/exceptions/finally.html
以及来自同一链接的说明:
重要提示:finally块是防止资源泄漏的关键工具.关闭文件或以其他方式恢复资源时,将代码放在finally块中以确保始终恢复资源.
如果您使用的是Java SE 7或更高版本,请考虑在这些情况下使用try-with-resources语句,这会在不再需要时自动释放系统资源.
| 归档时间: |
|
| 查看次数: |
452 次 |
| 最近记录: |