最终会在这种情况下执行(在C#中)?
try
{
// Do something.
}
catch
{
// Rethrow the exception.
throw;
}
finally
{
// Will this part be executed?
}
答案 0 :(得分:11)
是的,最后总是被执行。
演示行为的简单示例:
private void Button_Click(object sender, EventArgs e)
{
try
{
ThrowingMethod();
}
catch
{
}
}
private void ThrowingMethod()
{
try
{
throw new InvalidOperationException("some exception");
}
catch
{
throw;
}
finally
{
MessageBox.Show("finally");
}
}
答案 1 :(得分:3)
(编辑:收录评论的澄清 - 谢谢你们)
最后总是执行。我所知道的唯一例外是;
大多数没有执行Finally的场景与catastrohic失败有关,除了后台线程1之外,所以值得特别注意那个。
答案 2 :(得分:1)
是。
你可以很容易地测试出来。
但是你提出这个问题是一个很好的理由,可以将它写成嵌套在try / finally中的try / catch块。眼睛容易多了。