我认为这个标题完全解释了我的问题。
我想知道,我在finally
语句上执行我的代码,如果它来自try
或catch
。
有可能吗?
最简单的方法是:
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
块的末尾" -这通常是所有需要的。