在处理 中的错误时Application_Error
,我应该使用这两个中的哪一个?
我为两者找到了多个示例,但尚不清楚一个是否比另一个更好。是否存在只有一个会显示正确错误的情况?
另外,我怀疑这很重要,但应用程序使用的是 MVC 4。
在处理 中的错误时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