对于你们这些专家来说,这听起来很愚蠢。但我正在努力理解这一点!
我试图在我的MVC应用程序中实现ELMAH并突然想到前面提到的问题Is it okay to use Elmah instead of try/catch?
但我还有另一个问题。为什么?
我不使用Try catch和elmah记录异常,并且用户会显示错误页面。那为什么我需要Try / Catch?
涉及SQLTransations的应用程序在一个场景中,我想到try / catch / finally。在其他情况下,我可以跳过并仅使用ELMAH
究竟什么是正确的方法?希望我能澄清:) 感谢
答案 0 :(得分:2)
因为没有try / catch,代码会在发生异常时立即停止执行。这可能有很多原因,包括:
还有更多,但这给了你一个好主意。 Try / Catch允许您捕获异常,选择是否处理异常,然后继续生活而不会导致程序崩溃。另外,谁真的希望他们的代码因为NullReferenceException而死?更好的是,如果它是一个你无法控制的错误,例如NetworkTimeout问题,过早的HttpConnection关闭等等。在适当的情况下处理你的错误是一个好习惯。这并不意味着将整个代码块包装在try / catch中!
如果你仍然想要记住ELMAH,即使你捕获并处理异常,也可以这样做:
try {
...
}
catch (Exception e) {
Elmah.ErrorSignal.FromCurrentContext().Raise(e)
}