委托可以传递一个方法,那么利用这种特性,我们可以将在web页面中处理异常信息统一到一个静态方法中进行处理,实现如下:
声明委托:
public delegate void DoProcessPage( System.Web.UI.Page p_Page );
/// <summary>
/// 页面装载时调用此方法
/// </summary>
/// <param name="e"></param>
/// <remarks>
/// 在此初执行页面的初始化操作,及其相关验证操作
/// </remarks>
protected override void OnLoad(EventArgs e)
{
base.OnLoad (e);
DoPostback( this.Page,new DoProcessPage( this.DoLoadPage ) );
}

//初始化处理,子页面可重写此方法
protected virtual void DoLoadPage( System.Web.UI.Page p_Page )
{
}

//处理异常信息的静态方法
public static void DoPostback( System.Web.UI.Page p_Page,DoProcessPage p_DoProcessPage )
{
try
{
p_DoProcessPage( p_Page );
}
catch( System.Threading.ThreadAbortException ext ){} //忽略线程异常,此异常在页面转向时会自动抛出,在此处截取
catch( Exception ex )
{
//写入日志文件
WriteSystemLog( ex,p_Page.Request.Path,p_Page.Request.UserHostAddress );
//处理异常信息
}
}
声明委托:
public delegate void DoProcessPage( System.Web.UI.Page p_Page );


































