我有一个场景,我在主页面中加载一个控件:
Control mycontrol = LoadControl("~/mycontrol");
aspholder.Controls.Add(MyControl);
现在我需要知道是否有可能捕获异常(即使对于没有try catch的语句(从master页面的用户控件中抛出)
答案 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