c# - 有没有办法知道 finally 是在 try 还是 catch 之后执行的?

标签 c# try-catch

我认为标题解释了我的全部问题。

我想知道,如果它来自 trycatch,我在 finally 语句中执行代码的位置。

这可能吗?

最佳答案

嗯,最简单的方法是:

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

这不是一个特定的语言特性——它只是利用了这样一个事实,即除了真正的特殊情况(基本上是异步异常),你不会在赋值后发生异常成功

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

关于c# - 有没有办法知道 finally 是在 try 还是 catch 之后执行的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16101221/

相关文章:

c# - 关于 TabControl 中事件特殊性的问题

c# - Visual Studio 模板 - 添加其他预先存在的项目

php - 异常后恢复PHP执行脚本

c# - 在 Try/Catch block 中使用 Response.Redirect(url)

c# - 如何使用环境变量覆盖 Blazor 客户端配置?

c# - 特殊字符的正则表达式?

c# - 您将如何获得 int 数组中最低值的索引?

python - Try/except 异常类型的特定错误

c# - 在 visual studio 2010 中自动生成捕获

python - 复制文件时使用 try/except 或 if/else