【发布时间】:2012-10-20 09:18:26
【问题描述】:
为什么我们不应该使用 catch 块来清理代码?
我没有过多地使用错误处理技术,但现在我开始将它们用于几乎每个程序。 关于时间
所以,在浏览文章/文档时,我遇到了 finally 块。
正如它所暗示的,无论是否有异常,finally 块都会运行(当然,如果 JVM 或 PC 强制关闭,它不会运行)。 finally 块通常用于清理代码(资源)。
所以基本上,如果我的代码没有出现异常,那我为什么要清理代码。我不应该把清理代码放在 catch 块而不是 finally 块中吗?
我尝试寻找类似的问题,但似乎没有人问过这个问题。所以我继续创建了一个问题:D
【问题讨论】:
-
一个经典的例子是文件资源,不管遇到异常都需要关闭。
-
@DNA 这是一个 VB.NET 问题。
-
或数据库连接。无论您是否遇到异常,您都应该始终释放您的数据库连接。
-
异常也不是您想要清理的唯一时间。例如,如果您正在从输入流中读取数据,无论是否发生异常,您都希望关闭该流,因此将其放在 finally 块中可以保证它会被调用。
-
@Robert Harvey 好尴尬!很明显,我该睡觉了。但是再看一遍,我不确定在这种情况下它是否重要——概念和推理是一样的。
标签: java exception-handling try-catch-finally