即使发生了未处理的异常,也会调用Page_Unload。我需要处理这种情况。
我有一个变量状态验证,当变量在Page_Unload中没有处于正确状态时抛出异常。该例外稍后由Application_Error
中的Global.asax
处理。我需要在已经发生另一个异常时禁止抛出异常。
页面:
public partial class _Default : System.Web.UI.Page
{
private int tst = 0;
protected void Page_Load(object sender, EventArgs e)
{
tst = tst / tst; //causes "Attempted to divide by zero."
tst = 1;
}
protected void Page_Unload(object sender, EventArgs e)
{
if (tst == 0) throw new Exception("Exception on unload");
}
}
的Global.asax:
void Application_Error(object sender, EventArgs e)
{
// Get the error details
Exception lastErrorWrapper = Server.GetLastError();
System.Diagnostics.Debug.Print(lastErrorWrapper.Message);
}
我需要在Global.asax
中“尝试除以零。”但我得到“卸载时出现异常”
给出的例子大大简化了。真实情况包括用户控件和条件编译。
我无法解决Page_Load
中的情况(例如通过捕获异常)。
答案 0 :(得分:0)
为什么不使用像这样的global.asax方法
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
// Get the error details
Exception lastErrorWrapper = Server.GetLastError();
System.Diagnostics.Debug.Print(lastErrorWrapper.Message);
Response.Redirect("~/error.aspx?q=" + lastErrorWrapper.Message);
}
然后它不会在这里显示错误,替代是:
在web.config中设置自定义错误页面
<customErrors mode="On" defaultRedirect="mypage.aspx">
</customErrors>
此致