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?
好吧,最简单的方法是:
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
块的末尾”——这通常是所需要的。