处理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异常类不会覆盖
GetLastError
或InnerException
关于asp.net - Application_Error-GetLastError()或GetLastError()。GetBaseException(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15085465/