抛出异常c#advanced

rik*_*ush 1 c# try-catch

我有try和catch的代码.

try
 {
    //Some Code...
 }
catch (Exception err)
 {
     throw err;
 }
Run Code Online (Sandbox Code Playgroud)

我想知道的是编写这样的代码是否有优势.从catch中抛出exeption并编写try和catch而不是从破坏的行中获取错误.

提前致谢

Pat*_*man 5

如果您打算对其执行某些操作,则应该只捕获异常,例如,向其添加额外信息,将其记录到文件或类似内容,或更改异常:

try
{
    //Some Code...
}
catch (WebException err)
{
    throw new LicenseException("This was really bad!", err);
}
catch (Exception err)
{
    err.Data.Add("some-info", 123);

    logFramework.Log(err);

    throw;
}
Run Code Online (Sandbox Code Playgroud)

永远不要重新抛出相同的异常(throw err):当你这样做时你会丢失调用堆栈.相反,只是throw,它保留了调用堆栈.

  • 有什么需要清理的?我可以在此示例代码中添加100个最佳实践,但这与所提出的问题无关. (2认同)