C# 与ELMAH一起使用Try-Catch块

C# 与ELMAH一起使用Try-Catch块,c#,try-catch,elmah,C#,Try Catch,Elmah,由于ELMAH记录未处理的异常,并且我希望通过ELMAH记录所有错误,这是否意味着我不应该在代码的任何地方使用try-catch块?如果我不使用它,它将显示死亡的黄色屏幕,我相信我可以通过自定义错误页面来处理 所以,我认为如果你使用ELMAH,试抓块将是无用的,对吗?如果没有,那么对ELMAH使用try-catch的用例是什么 你错了。仅因为ELMAH针对未处理的异常提供了一些日志功能(以及更多),并不意味着所有异常都建议未处理 您应该按照预期的方式继续使用异常,例如提供适当的处理,例如进一步的

由于ELMAH记录未处理的异常,并且我希望通过ELMAH记录所有错误,这是否意味着我不应该在代码的任何地方使用try-catch块?如果我不使用它,它将显示死亡的黄色屏幕,我相信我可以通过自定义错误页面来处理


所以,我认为如果你使用ELMAH,试抓块将是无用的,对吗?如果没有,那么对ELMAH使用try-catch的用例是什么

你错了。仅因为ELMAH针对未处理的异常提供了一些日志功能(以及更多),并不意味着所有异常都建议未处理

您应该按照预期的方式继续使用异常,例如提供适当的处理,例如进一步的诊断,甚至围绕异常的业务逻辑

示例:如果您的应用程序与关闭的第三方服务集成,那么您可能会遇到一个您应该处理的异常,例如。g、 :

try {
    .. call third party service
} catch (TimeOutException toe) {
    .. handle such as redirection
}

使用ELMAH,您可以捕获错误,处理错误,并且仍然使用ErrorSignal记录问题

我想你弄错了!您总是需要处理异常,ELMAH有助于让您了解未处理的异常,以及可能存在bug的地方。您可以通过额外的检查(例如if&else)来修复这些位置,然后您可以继续执行代码或向用户显示有意义的消息,或者让异常冒泡被处理,直到ELMAH处理为止。通常是组合。抓住你能做点什么的错误,让ELMAH抓住其余的@SteveGreene如果我想将从catch块捕获的错误也记录到ELMAH,该怎么办?我想将所有错误记录到ELMAH,包括我的代码中我预期失败的地方(如DB访问),使用ErrorSignal记录捕获的错误。谢谢@SteveGreene。我有机会接受你的回答吗?谢谢!例如,如果我想在ELMAH中记录超时异常,我应该如何做?我可以重新抛出,但是如果我将重新抛出放在前面,“句柄如重定向”不会被击中。如果我把它放在重定向之后,我认为重新抛出也不会被击中;你要么做一个,要么做另一个。首先做日志记录,重定向。完成。如果你抛出一个异常而不亲自处理,你的应用程序就会崩溃。