c# - 为什么有人会 Catch (Exception e) { throw e; }?

标签 c# error-handling try-catch

为什么会有人这样做?我不明白。我可以在不影响代码的情况下删除这个 try-catch block 吗?

try
{
    Collection<SvnLogEventArgs> svnLog = GetSVNRevisionsLog(lastRevision, currentRevision, svnUrl);

    svnInfo = PopulateOutput(svnLog, svnUrl.ToString());
}
catch (Exception e)
{
    throw e;
}

最佳答案

Why would anyone do this?

你不应该这样做。如果您想添加一些日志记录,您应该最接近的情况是,在这种情况下您应该写:

try
{
  /// Do something
}
catch (Exception e)
{
   LogException(e); // Do some logging
   throw; // Don't use throw e
}

throw 语句单独使用时,保留异常调用堆栈信息。

也就是说,如果您没有其他逻辑(例如日志记录),则绝对没有理由捕获异常。仅当您需要记录/处理异常,或者您可以合理地处理错误并正确恢复时,才应捕获异常。

关于c# - 为什么有人会 Catch (Exception e) { throw e; }?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21863949/

相关文章:

c++ - 为什么 try..catch block 需要大括号?

c# - 使用 mvc6 网格时无法将显示格式设置为小数点后两位

c# - C++中指针和C#中引用类型的区别

ruby - 我的 Rubocop 不喜欢 Ruby 错误处理中的 => e。 => e 不是标准的吗?

batch-file - 允许 bat 脚本对错误采取行动

python - 在 python 中有异常命中两个 except block

c# - 如何不将属性与 JSON 数据绑定(bind)

c# - 获取给定进程的文件句柄

c# - 如何修复错误代码 CS1503?

javascript try catch 与 json 解析