Usercontrol异常处理

时间:2014-02-18 11:24:54

标签: c# asp.net

我有一个场景,我在主页面中加载一个控件:

   Control mycontrol = LoadControl("~/mycontrol");
   aspholder.Controls.Add(MyControl);

现在我需要知道是否有可能捕获异常(即使对于没有try catch的语句(从master页面的用户控件中抛出)

1 个答案:

答案 0 :(得分:1)

您可以处理TemplateControl.Error事件的未处理异常。 MasterPage,Page,UserControl都继承了它,所以你可以写:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class MyMasterPage : System.Web.UI.MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Page.Error += Page_Error;
        }

        private void Page_Error(object sender, EventArgs e)
        {
            var ex = Server.GetLastError();

            // do something with exception
            Debug.WriteLine(ex);
        }
    }
}

然后,如果在Page \ UserControl逻辑中发生未处理的异常,那么它将调用Error事件,该事件将调用此Page_Error方法。

MSDN关于它的文章 - http://msdn.microsoft.com/en-us/library/ed577840(v=vs.100).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1