Разработчик создал пользовательский элемент управления в 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, я могу найти, где DataSource репитера устанавливаются, однако, я не могу найти событие DataBind.
Любые идеи, как я могу захватить исключение в этом элементе управления ASCX, чтобы я мог сообщить об этом пользователю?
Edit:
Трассировка стека выглядит следующим образом. В репитере есть еще один повторитель, который фактически вызывает ошибку (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)
Не думал, чтобы посмотреть в StackTrace исключения. Спасибо за идею. – proudgeekdad