Разработчик создал пользовательский элемент управления в ASP.NET с использованием VB.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 я могу найти, где устанавливается источник данных ретранслятора, однако не могу найти событие DataBind.
Любые идеи о том, как я могу зафиксировать исключение в этом элементе управления ASCX, чтобы я могсообщить об этом пользователю?
Редактировать:
Трассировка стека выглядит следующим образом.В ретрансляторе есть другой повторитель, который фактически вызывает ошибку (rptOther), и я могу перехватить ошибку, но я могу только выбросить ее в rpt_ItemDataBound.Я не могу понять, как вызывается rpt_ItemDataBound без события DataBind.
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)