为什么有人会做Catch(例外e){throw e; }?

sir*_*ank 3 c# error-handling try-catch

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

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

    svnInfo = PopulateOutput(svnLog, svnUrl.ToString());
}
catch (Exception e)
{
    throw e;
}
Run Code Online (Sandbox Code Playgroud)

Ree*_*sey 8

为什么有人会这样做?

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

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

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

话虽这么说,如果你没有其他逻辑(如日志记录),绝对没有理由捕获异常.只有在您需要记录/处理它们,或者您可以合理地处理错误并正确恢复时,才应捕获异常.