Событие вызывает ошибку, но я не могу поймать исключение - PullRequest
0 голосов
/ 23 апреля 2010

Разработчик создал пользовательский элемент управления в 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)

1 Ответ

1 голос
/ 23 апреля 2010

Вы пытались зарегистрировать глобальный обработчик исключений? Если вы можете поймать исключение там, вы можете использовать трассировку стека, чтобы определить, где вы можете попытаться перехватить его правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...