我认为标题解释了我的整个问题。
我想知道,我在finally
语句中执行代码的位置,如果它来自try
或catch
。
有可能吗?
答案 0 :(得分: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
块的结尾” - 这通常都是需要的。