ASP.. NET错误处理-在Global.asax中没有检测到正确的错误类型
本文关键字:错误 检测 类型 处理 NET asax Global ASP | 更新日期: 2023-09-27 18:11:15
我定义了一些自定义的错误类,每个类都有自己的功能(未显示):
Exceptions.cs
public abstract class MyAppException : Exception {
//...
}
public class ValidationException : MyAppException {
//...
}
public class AccessDeniedException : MyAppException {
//...
}
现在在空白页面的代码后面我有:
test.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
throw new AccessDeniedException();
}
我的目的是在应用程序级别捕获这个:
Global.asax.cs
protected void Application_Error(object sender, EventArgs e) {
var exc = Server.GetLastError();
if (exc is MyAppException) ((MyAppException)exc).Log();
}
但是通过添加一个断点,我发现exc is MyAppException
的计算结果为false
。
我哪里错了?
Try the InnerException:
if (exc.InnerException is MyAppException)
是System.Web.UI.Page.HandleError
方法将实际的异常包装到HttpUnhandledException
中。