处理Application_Error中的错误时,应该使用哪两个?

我为两者都找到了多个示例,但是还不清楚一个示例是否比另一个示例更好。在某些情况下,只有一种会显示正确的错误吗?

另外,我怀疑这很重要,但是该应用程序正在使用MVC 4。

最佳答案

这取决于您到底需要什么。
Exception.GetBaseException的文档:
Application_Error可以在较高级别上处理异常,可能是在几种异常处理机制之后进行的,因此,如果像这样抛出异常:

try {
   //Lots of code, method calls, etc...
   try {
       throw new FooException("Foo");
   } catch(FooException fe) {
       throw new BarException("Bar", fe);
   }
}catch(BarException be) {
    throw new FooBarException("FooBar", be);
}
然后GetLastError将获得FooBarException,而GetLastError().GetBaseException()将获得FooException。因此,前者返回实际未处理的异常,而后者返回根本原因。
我假设Foo,Bar和FooBar异常类不会覆盖GetLastErrorInnerException

关于asp.net - Application_Error-GetLastError()或GetLastError()。GetBaseException(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15085465/

10-13 00:50