我认为标题解释了我的全部问题。
我想知道,如果它来自 try
或 catch
,我在 finally
语句中执行代码的位置。
这可能吗?
最佳答案
嗯,最简单的方法是:
bool success = false;
try
{
...
// This should be the last statement in the try block
success = true;
}
catch(...)
{
...
}
finally
{
if (success)
{
...
}
}
这不是一个特定的语言特性——它只是利用了这样一个事实,即除了真正的特殊情况(基本上是异步异常),你不会在赋值后发生异常成功
。
请注意,success
为 false
并不意味着您的任何 catch
block 已执行 - 可能是抛出了异常你没有捕捉到(或者你在 try
block 结束之前返回)。基本上它仅表示“已到达try
block 的末尾”——这通常是所有需要的。
关于c# - 有没有办法知道 finally 是在 try 还是 catch 之后执行的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16101221/