为什么我们不应该使用catch块来清理代码?
我没有使用错误处理技术,但我现在开始将它们用于几乎每个程序。 关于时间
因此,在浏览文章/文件时,我遇到了最后一块。
正如它所暗示的那样,无论是否存在异常,finally块都会运行(当然,如果JVM或PC被强制关闭,它将无法运行)。最后,块通常用于清理代码(资源)。
所以基本上,如果我的代码没有异常,那么我为什么要清理代码呢。我不应该将清理代码放在catch块而不是finally块中。
我尝试寻找类似的问题,但似乎没有人问过这个问题。所以我继续提出了一个问题:D
答案 0 :(得分:7)
因为catch
块无法保证执行。 finally
块确实有这样的保证,除非你把电源线踢出墙外。
答案 1 :(得分:1)
正如@RobertHarvey指出的那样,catch
块无法保证执行,因此finally
块是为了避免使用这种代码来使代码更清晰:
try
{
// do something
}
catch(Exception e)
{
// error handling
// clean up
}
// clean up
这样你就可以这样:
try
{
// do something
}
catch(Exception e)
{
// error handling
}
finally
{
// clean up
}
finally
块会帮助你,如果你想要第一个被执行的代码,即你想要清理(例如关闭文件),如果你有异常,如果你只是想如果发生错误,请清理,CAN
在catch块中清理。