c# - 在 .NET 中,try/catch 只是重新抛出 catch 有什么好处

标签 c# .net try-catch

<分区>

Possible Duplicate:
Why catch and rethrow Exception in C#?

我有时会遇到如下所示的 C# 代码:

        try
        {
            // Some stuff
        }
        catch (Exception e)
        {
            throw e;
        }

我知道可以做一些事情,比如记录异常消息然后重新抛出它。我说的是一个只会重新抛出异常的捕获。我看不出这有什么意义。我有三个问题:

1)这样做有什么好处

2) 这是否会减慢代码的速度

3) 如果 catch block 如下所示,会有什么不同吗:

        catch (Exception)
        {
            throw;
        }

最佳答案

这会重新抛出完全相同的异常:

    catch (Exception)
    {
        throw;
    }

而这会在没有原始堆栈跟踪的情况下重新抛出异常:

    catch (Exception e)
    {
        throw e;
    }

throw; 通常有一个很好的理由,因为您可以在重新抛出异常之前记录异常或做其他事情。我不知道 throw e; 有什么好的理由,因为你会清除有值(value)的堆栈跟踪信息。

关于c# - 在 .NET 中,try/catch 只是重新抛出 catch 有什么好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1207172/

相关文章:

C# - 如何声明一个将由 if 语句内的数据库调用填充的变量?

c# - 使用 HttpWebRequest POST 到外部服务器上的表单

.net - "Reference"web.config 中的用户控件?

c# - 将跟踪监听器附加到 app.config 中的现有跟踪源

c# - Sqlite纪元日期时间转换

c# - 将控制台应用程序转换为 Windows 服务

java - Try With Resources vs Try-Catch

java - 程序在 catch block 结束之前继续

c# - sleep block 程序是否退出?它是如何实现的?

javascript - 我的 try/catch 代码有什么问题?