如何在Page_Unload中检测已经发生了未处理的异常

本文关键字:发生了 未处理 异常 检测 Page Unload | 更新日期: 2023-09-27 18:12:21

即使发生了未处理的异常也会调用Page_Unload。我需要处理这种情况。

我有一个变量状态验证抛出异常,当变量不在Page_Unload的正确状态。该异常稍后由Global.asax中的Application_Error处理。当另一个异常已经发生时,我需要抑制抛出异常。

页面:

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中的情况(例如通过捕获异常)。

如何在Page_Unload中检测已经发生了未处理的异常

为什么不使用global呢?像这样的ax方法

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>

相关文章: