Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перехват Exception в Page_Error, Перехват Exception в Page_Error 
:(
    Опции темы
Sirius_UZ
Дата 27.2.2008, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 13.6.2007

Репутация: нет
Всего: нет



Как отловив Exception в Page_Error отобразить его на той же странице.
Exception возникает при обработке нажатий кнопок на странице.
Используя код:
Код

 protected void Page_Error(object sender, EventArgs e)
    {        
        Exception ex = Server.GetLastError();        

        errorLabel.Text = ex.Message;

        Server.ClearError();
    }


получаю только пустую страницу. Что в принципе и логично(наверное), Exception то прерывает процесс обработки запроса. Т.е. скорее всего надо его(процесс) восстановить. Но как???
Обработку Exception в блоках try{...}catch{...} использовать не хочется из-за однотипности возникающего исключения и однотипности его обработки, да ко всему прочему хотелось бы иметь унифицированный механизм обработки данного типа Exception используя наследование страничек от базовой, в которой стоит обработчик(хотя можно и на каждой). Поэтому хотелось бы обрабатывать этот тип исключений на текущей странице, а все остальные можно и в Application_Error в Global.asax или в HttpModule, с выводом сообщения об ошибке на отдельной странице. Что можете посоветовать уважаемые?
PM MAIL   Вверх
tol05
Дата 27.2.2008, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 34
Всего: 170



Цитата(Sirius_UZ @  27.2.2008,  14:27 Найти цитируемый пост)
Как отловив Exception в Page_Error отобразить его на той же странице.

Код

protected void Page_Error(object sender, EventArgs e)
    {
        Exception ex = Server.GetLastError();
        Response.Write(ex.Message);
        Server.ClearError();
    }


Цитата(Sirius_UZ @  27.2.2008,  14:27 Найти цитируемый пост)
Exception то прерывает процесс обработки запроса. Т.е. скорее всего надо его(процесс) восстановить. Но как???

никак. Exception прерывает конвейер обработки запроса на уровне страницы. Если exception не обработано в Page_Error - то и на уровне приложения. Тогда действительно его нужно перехватывать в global.asax

Цитата(Sirius_UZ @  27.2.2008,  14:27 Найти цитируемый пост)
Обработку Exception в блоках try{...}catch{...} использовать не хочется из-за однотипности возникающего исключения и однотипности его обработки, да ко всему прочему хотелось бы иметь унифицированный механизм обработки данного типа Exception используя наследование страничек от базовой, в которой стоит обработчик(хотя можно и на каждой). Поэтому хотелось бы обрабатывать этот тип исключений на текущей странице, а все остальные можно и в Application_Error в Global.asax или в HttpModule, с выводом сообщения об ошибке на отдельной странице.

ИМХО логично. Можешь сделать свой базовый класс, наследник от Page, а свои страницы наследовать уже от него. И в эотм самом классе можно попробовать определить метод Page_Error с обработкой наиболее распространенных исключений.


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Sirius_UZ
Дата 27.2.2008, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 13.6.2007

Репутация: нет
Всего: нет



Спасибо за ответ.
Цитата

Код

   protected void Page_Error(object sender, EventArgs e)
    {
        Exception ex = Server.GetLastError();
        Response.Write(ex.Message);
        Server.ClearError();
    }



Данный код выведет сообщение об ошибке, но текущая страница со всеми ее текст боксами и прочими компонентами не появиться... 

В итоге получается что Page_Error - событие для обработки, в котором можно обработать Exception, выполнив необходимые действия, но ошибку при этом показать на текущей странице никак не получиься, только выплюнув используя Server.Transfer, либо используя custom errors pages, либо банальным Response.Redirect. Если хочется сохранить все данные странички и отобразить их вместе с сообщением об ошибке, то необходимо обрабатывать Exception в обработчике нажатия на кнопку(грубо говоря в конвеере обработки запроса) и соответственно вывешивать сообщение об ошибке.
Я правильно понимаю ситуацию? Других вариантов нету?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0486 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.