2

I think the title explain whole my question.

I'd like to know, where I execute my code on finally statement, if it come from a try or a catch.

Is it possible?

4

1 回答 1

11

好吧,最简单的方法是:

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

这不是一个特定的语言特性——它只是利用了这样一个事实,即除了非常显着的情况(基本上是异步异常)之外,在分配给success.

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

于 2013-04-19T09:17:42.887 回答