2

我对在 ASP.NET 和 WCF(IErrorHandler) 中使用全局异常处理程序(Application_Error/Page_Error) 没有什么基本的疑问。

如果我使用上述任何一种,每个异常都会通过它们吗?我可以根据自己的意愿记录和映射它们吗?这是否也促进了删除所有不必要的 try catch 块并在需要的地方用 try finally 替换它们?

我所说的“不必要”是指捕获最终变得多余的块。例如,如果我在 wcf 中捕获所有 DB 异常并将它们转换为特定的 FaultException,现在我在 ProvideFault 方法中进行相同的转换,我现在不应该删除那些 catch 块,因为他们所做的唯一工作就是使用客户端创建 FaultException友好的细节?

4

1 回答 1

1

是的,您可以全局记录错误,但它不会消除您在页面中进行错误处理的需要(旁注,一些错误,如 StackOverflowException,不会被捕获)。在全局级别记录的唯一错误应该是意外的,而不是避免使用 try/catch 的方法。下面是一个简单的例子说明原因:

您要求用户输入一个数字。您将输入解析为 int。他们输入了一个字符串。您想在全局级别记录此错误吗?不,你想抓住它并向用户显示和错误。

此外,在 NuGet 中搜索 Elmah,看看它是否适合您。在 5 分钟内处理错误。

于 2013-09-29T05:12:11.320 回答