在MVC中使用ELMAH时我是否需要尝试捕捉。为什么?

时间:2013-04-25 16:26:41

标签: asp.net-mvc error-handling elmah.mvc

对于你们这些专家来说,这听起来很愚蠢。但我正在努力理解这一点!

我试图在我的MVC应用程序中实现ELMAH并突然想到前面提到的问题Is it okay to use Elmah instead of try/catch?

但我还有另一个问题。为什么?

我不使用Try catch和elmah记录异常,并且用户会显示错误页面。那为什么我需要Try / Catch?

涉及SQLTransations的应用程序在一个场景中,我想到try / catch / finally。在其他情况下,我可以跳过并仅使用ELMAH

究竟什么是正确的方法?希望我能澄清:) 感谢

1 个答案:

答案 0 :(得分:2)

因为没有try / catch,代码会在发生异常时立即停止执行。这可能有很多原因,包括:

  • 需要处理对象
  • 回滚/提交数据库事务

还有更多,但这给了你一个好主意。 Try / Catch允许您捕获异常,选择是否处理异常,然后继续生活而不会导致程序崩溃。另外,谁真的希望他们的代码因为NullReferenceException而死?更好的是,如果它是一个你无法控制的错误,例如NetworkTimeout问题,过早的HttpConnection关闭等等。在适当的情况下处理你的错误是一个好习惯。这并不意味着将整个代码块包装在try / catch中!

如果你仍然想要记住ELMAH,即使你捕获并处理异常,也可以这样做:

try {
  ...
}
catch (Exception e) {
  Elmah.ErrorSignal.FromCurrentContext().Raise(e)
}