0

我一直在使用异常处理并安装了Resharper,现在收到各种消息说我应该而且应该这样做。无论如何,它说我不应该在我的代码周围使用 try 和 catch 块。那么我应该把它们放在哪里来捕获异常呢?我见过有人在寻找某些异常,例如 File not found,但其他所有唯一的错误或异常呢?

下面是一些它抱怨的异常处理示例:

try
{
    var rnd = new Random();
    var buffer = new byte[sizeof(UInt64)];
    rnd.NextBytes(buffer);
}
catch (Exception)
{
    throw;
}

有没有人有异常处理最佳实践的链接,可以让 re-sharper 感到高兴?

4

2 回答 2

0

仅捕获您可以处理的那些异常,例如插入重复的主键,以便您可以向用户显示一条消息以输入不同的值。

对于其他例外,让它们在您的库中冒泡并在一个地方处理它们。像 ASP.Net 中的 Application_Error 事件

于 2013-08-28T16:01:39.047 回答
0

正如其他人已经指出的那样,只有在您确实计划对 catch 块内的异常执行某些操作时才使用 try/catch - 这样做请记住,实际上并不能保证 catch 块将实际执行(例如电源故障)。

当我问一个非常相似的问题时,请参阅给我的解释:何时使用 try/catch

如果您只想诊断/记录异常并且不做任何特定的事情,您可以使用全局异常处理程序,即AppDomain.UnhandledException - 这样您就可以集中处理。

于 2013-09-06T09:12:10.110 回答