关于c#:捕获异常未被使用的最佳实践

Best practice for caught exceptions not being used

本问题已经有最佳答案,请猛点这里访问。

我很想知道对于捕获到的未使用的异常,最佳实践是什么。具有讽刺意味的是,这首先与最佳实践背道而驰。我发现自己可以这样做,也许这只是我的经验不足,但我想知道通常做什么。

我已经编写了一个小型控制台应用程序,它从一个SharePoint站点获取列表信息,并在另一个服务器场上共享。有问题的函数将列表查询到Xelement中,我会在查询过程中发现任何错误。这是一个片段。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
...
    try
    {
       return lists.GetListItems("Global Announcement", null, null, viewFields.GetXmlNode(), null, null, null)
                 .GetXElement().Elements().First().Elements().First();
    }
    catch (Exception ex)
    {
        throw;
    }
}
catch (Exception ex)
{
    ErrorLogging.SaveErrorToEventLog("Encountered an error when attempting to connect:", ex);
}

一位大四学生建议我只使用内部异常的throw来保持堆栈信息的正确顺序。在这种情况下,我很好奇地想知道对于Exception ex来说,最佳实践是什么,或者如果一开始就不应该打破try catch的最佳实践?


捕获一个异常以重新引发它是毫无意义的,只会导致代码变大变慢。

另一方面,如果您确实捕获并且不重新执行,则应该始终将其记录在某个位置,就像您在外部处理程序中所做的那样。