在哪种情况下,在C#中不执行finally块?

时间:2017-02-09 07:56:28

标签: c#

如何跳过C#中的finally块?

是否可以跳过最后的'即使它在尝试后仍然存在并且阻止阻塞。

1 个答案:

答案 0 :(得分:3)

我能想到的唯一方法就是一面旗帜:

bool skipFinally = false;

try
{
    DoSomething();
    skipFinally = true;
    DoSomethingElse();
}
finally
{
    if (!skipFinally)
        DoFinallyStuff();
}

因此finally块会逐字执行,但您可以决定该做什么。

但它有一种设计缺陷的味道。为什么你的finally块中的代码可能不应该首先被执行?
但另一方面:C#编译器为迭代器块生成如上所示的代码。