在catch块中添加清除代码和在catch块之后添加清理代码之间有什么区别?
try
{
//some code
}
catch
{
}
finally
{
//cleanup
}
和
try
{
//some code
}
catch
{
}
//cleanup
答案 0 :(得分:0)
如果从try .. catch
块中抛出未被此catch
捕获的抛出,则finally
子句内的清理代码将执行,代码紧跟{{1}之后的代码阻止不会。
答案 1 :(得分:0)
在第二种情况下,如果代码重新抛出异常或从catch块返回,则不会调用result
代码。在cleanup
块的情况下,即使你有一个异常或来自catch块的return语句,它也会被执行。
MSDN说:
通过使用finally块,您可以清理所有资源 在try块中分配,即使异常也可以运行代码 发生在try块中。通常,finally块的语句 当控件离开try语句时运行。控制权的转移可以 由于正常执行,执行休息, 继续,转到或返回语句,或传播异常 在try语句之外。