如果你运行下面的代码,它实际上会在每次调用goto之后执行finally:
int i = 0;
Found:
i++;
try
{
throw new Exception();
}
catch (Exception)
{
goto Found;
}
finally
{
Console.Write("{0}\t", i);
}
为什么?
发布于 2009-07-17 05:25:10
看起来很合理。finally
块始终在try
或catch
之后运行。
类似的
try
{
// do something
return;
}
finally
{
// do something else
}
将始终运行finally
块。编辑-但请参阅上面Eric的评论。
发布于 2009-07-17 05:24:03
这是设计好的。在异常处理程序中,您可以采取一些特定于异常的操作。在finally块中,您应该清理资源-这就是为什么不管异常处理代码是什么,finally块总是被执行的原因。
发布于 2009-07-17 05:52:21
正如人们所提到的,无论程序流程如何,finally
都会运行。当然,finally
块是可选的,所以如果您不需要它,就不要使用它。
https://stackoverflow.com/questions/1141502
复制相似问题