Как обрабатывать исключение выдается методом Select ObjectDatasource? - PullRequest
4 голосов
/ 26 июля 2011

У меня есть метод Select, подключенный к ObjectDatasource, этот метод может выдать исключение, и я не знаю, как его обработать!

Проблема в том, что я не контролирую это. Когда страница отрисовывается, метод выбора вызывается напрямую ObjectDatasource, и напрямую генерируется необработанное исключение.

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

Так, где я могу обработать исключение?

Есть ли другие варианты?

Ответы [ 3 ]

9 голосов
/ 26 июля 2011

Посмотрите на события в ObjectDataSource. Должны быть e.Exception и e.Results, которые вы можете запросить на успех / ошибку по вашему выбору.

protected void MyOds_Selected (object sender, ObjectDataSourceStatusEventArgs e)
{
    if (e.Exception != null)
    {
        // handle exception here.
...
    //tell the ObjectDatasource that the exception is handled
    //and don't rethrow it.
    e.ExceptionHandled = true;

    }
}
2 голосов
/ 26 июля 2011

Вы должны подписаться на событие ObjectDataSource.Selected.

<asp:ObjectDataSource OnSelected="ObjectDataSourceStatusEventHandler" />

Проверьте исключение в этом событии, о котором упоминает @Kirill, и, возможно, скрыте вид сетки и отобразите какое-то сообщение об ошибке пользователю.Проверьте эту ссылку .

0 голосов
/ 26 июля 2011

Если я правильно понимаю, у вас есть страница, которая в какой-то момент вызывает Select() на ObjectDataSource и что этот вызов иногда завершается с ошибкой за исключением.

Теперь, где вы обрабатываете это исключение, зависит от вашего сценария. в общем, вы должны попытаться обработать исключения в самой ранней точке , где это имеет смысл , именно там вы можете сделать что-нибудь полезное в ответ на ошибку. Для веб-сайта, который может быть в точке, где вы можете перенаправить пользователя на страницу ошибки, например.

Обратите внимание, что на этом раннем этапе, когда это имеет смысл, может быть довольно поздно, в случае, если вы перенаправляете пользователя на страницу с ошибкой, она может достигать уровня пользовательского интерфейса (или страницы). В более ранний момент вы можете попытаться перехватить исключение и повторить запрос, а если это не удастся, сбросить исключение

Прошу прощения за смелый новичок, но это действительно зависит :)

...