有没有办法知道在尝试或捕获之后是否最终执行?

时间:2013-04-19 09:16:49

标签: c# try-catch

我认为标题解释了我的整个问题。

我想知道,我在finally语句中执行代码的位置,如果它来自trycatch

有可能吗?

1 个答案:

答案 0 :(得分:11)

嗯,最简单的方法是:

bool success = false;
try
{
    ...
    // This should be the last statement in the try block
    success = true;
}
catch(...)
{
    ...
}
finally
{
    if (success)
    {
        ...
    }
}

这不是一个特定的语言功能 - 它只是使用真正非凡的情况(基本上是异步异常)以外的事实,你不会在分配后发生异常到success

请注意,successfalse并不意味着您的任何catch块已执行 - 可能是因为您没有捕获的异常(或者你在try块结束之前返回了。基本上它只 表示“到达try块的结尾” - 这通常都是需要的。