2010-04-22 74 views
0

開發人員使用VB.NET在ASP.NET中創建了一個自定義控件。自定義控件使用中繼器。在某些情況下,rpt_ItemDataBound事件遇到數據錯誤。我的目標是讓用戶看到死亡的黃色屏幕,而不是讓用戶更準確地解釋數據錯誤是什麼。我想我可以使用如下所示的Try/Catch塊來拋出異常,但是,看起來該事件無處被拋出並停止在「End Try」行執行。事件導致錯誤,但我無法捕捉到異常

Protected Sub rpt_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rpt1.ItemDataBound, rpt2.ItemDataBound 

    Try 

     ProcessBadData... 

    Catch ex As Exception 
     Throw ex 
    End Try 

End Sub 

在VB.NET中,我可以找到設置中繼器的DataSource的位置,但是我找不到DataBind事件。

任何想法如何捕捉在這個ASCX控制異常,所以我可以報告給用戶?

編輯:

堆棧跟蹤看起來是這樣的。中繼器中有另一個實際上導致錯誤(rptOther)的中繼器,我能夠捕獲錯誤,但我只能將它放到rpt_ItemDataBound中。我無法弄清楚如何在沒有DataBind事件的情況下調用rpt_ItemDataBound。

at Company.WebForms.Control.rptOther_ItemDataBound(Object sender, RepeaterItemEventArgs e) 
at System.Web.UI.WebControls.Repeater.OnItemDataBound(RepeaterItemEventArgs e)  
at System.Web.UI.WebControls.Repeater.CreateItem(Int32 itemIndex, ListItemType itemType, Boolean dataBind, Object dataItem)  
at System.Web.UI.WebControls.Repeater.CreateControlHierarchy(Boolean useDataSource)  
at System.Web.UI.WebControls.Repeater.OnDataBinding(EventArgs e)  
at System.Web.UI.WebControls.Repeater.DataBind()  
at Company.WebForms.Control.rpt_ItemDataBound(Object sender, RepeaterItemEventArgs e) 

回答

1

您是否嘗試過註冊全局異常處理程序?如果您可以捕捉到異常,您可以使用堆棧跟蹤來查明您可能會嘗試正確捕捉它的位置。

+0

有沒有想過看看例外的StackTrace。感謝這個想法。 – proudgeekdad 2010-04-22 21:42:18