如何在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
中的情况(例如通过捕获异常)。
为什么不使用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>
对