全局异常处理程序是否意味着删除不必要的try catch块?

时间:2013-09-29 05:06:32

标签: c# asp.net .net wcf

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

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

通过'不必要'我的意思是,抓住最终变得多余的块。例如如果我正在捕获所有数据库异常并将它们转换为wcf中的特定FaultException,现在我在ProvideFault方法中进行相同的转换,我现在不应该删除那些catch块,因为他们正在做的工作是创建具有客户端友好的FaultException细节?

1 个答案:

答案 0 :(得分:1)

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

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

此外,搜索NuGet for Elmah并查看这是否适合您。 5分钟内处理错误。