2014-02-18 62 views
0

我遇到的情況,我加載控制在母版:用戶控件異常處理

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

現在我需要知道,如果有可能捕獲異常(甚至不試試statment趕上(即在用戶控件拋出從母版頁

+0

不確定是否遵循。嘗試catch塊應放置在最有可能發生異常的地方。所以即使在用戶控件中,如果它正在執行除了在視圖/ UI上呈現數據之外的事情。你可以在你的代碼片段中放置一個try catch塊,但是不太合理 –

回答

1

您可以處理未處理的異常上TemplateControl.Error事件母版,頁,用戶控件他們都繼承了它,所以你可以寫:

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