【问题标题】:Use of Try Catch Block with ELMAH使用带有 ELMAH 的 Try Catch 块
【发布时间】:2015-06-03 21:09:31
【问题描述】:

由于 ELMAH 记录 UNHANDLED 异常并且我想通过 ELMAH 记录所有错误,这是否意味着我不应该再在代码的任何地方使用 try-catch 块?如果我不使用它会显示黄屏死机,我相信我可以通过自定义错误页面进行处理。

所以,如果您使用 ELMAH,我认为 try-catch 块将毫无用处,对吗?如果不是,那么在 ELMAH 中使用 try catch 的用例是什么?

【问题讨论】:

  • 我觉得你搞错了!您总是需要处理异常,ELMAH 有助于让您了解未处理的异常,了解可能存在错误的地方。您可以通过额外检查(例如 if&else)来修复这些地方,然后您可以继续执行代码或向用户显示有意义的消息或让异常冒泡直到由 ELMAH 处理为止。
  • 通常是组合。抓住你可以解决的错误,让 ELMAH 抓住其余的。 stackoverflow.com/questions/21862753/…
  • @SteveGreene 如果我想将我从 catch 块中捕获的错误也记录到 ELMAH 怎么办?我想将所有错误记录到 ELMAH,包括我的代码中我预计会失败的地方(如数据库访问)
  • 使用 ErrorSignal 记录捕获的错误。 blog.elmah.io/how-to-log-errors-to-elmah-programmatically
  • 感谢@SteveGreene。这里有机会接受你的回答吗?

标签: c# try-catch elmah


【解决方案1】:

使用 ELMAH,您可以捕获错误、处理错误并仍然使用 ErrorSignal 记录问题。 http://blog.elmah.io/how-to-log-errors-to-elmah-programmatically/

【讨论】:

    【解决方案2】:

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

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

    示例:如果您的应用程序与已关闭的第三方服务集成,您最终可能会遇到应处理的异常,例如。 g.:

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

    【讨论】:

    • 谢谢!对于您的示例,如果我想在 ELMAH 中记录该超时异常,我应该怎么做?我可以重新抛出,但如果我之前放置重新抛出,则不会命中“重定向等处理”的东西。如果我把它放在重定向之后,我认为重新抛出也不会被击中。
    • 你不能重定向 throw;你做一个或另一个。首先记录logging with ELMAH,重定向。完毕。如果您抛出异常并且不自己处理,您的应用程序将会崩溃。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    • 2019-12-04
    • 2018-05-27
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多