Rambler's Top100
Главная
Новости
Статьи
Форумы
Книги
Коды
Сообщество
Блоги
О нас
 

Логин

Email:
  Пароль:

Войти
Зарегистрироваться
Забыл пароль

Поиск

 Искать :
 
Вперед

Сообщение

sau


Имеющий Что Сказать

Зарегистрирован:
15 February 2005
Сообщения: 65
Примеры кода: 0
 

RE: Стоит ли ловить Exception

10 July 2008 18:08  


Добрый день.

Задумался над таким вопросом стоит ли ловить все Exception, чтобы в случаи ошибки выводить пользователю user friendly сообщения.

Пример.
Приложение состоит из трех слоев. DataAccess, BussinessLogic, Presentation

Все exception, которые произошли в DataAccess без изменений передаются в BussinessLogic. Exception которые произошли в BL либо передаются в Presentation без изменений, либо ловятся и в Presentation кидается какой-то custom Exception, который может содеражать дополнительные сведения.
В presentation ловятся абсолютно все exceptions. Если таковые произошли, то информация о них логируется (в БД, письмо, в event viewer ...), а пользователю показывается сообщение в стиле "An error occured. Please contact your sysadmin" или что-то в таком духе. Так как сообщение ни очем не говорит, то показывать его при любой ошибки тоже смысла нет, т.е. если произошла ошибка при подключении к базе, то лучше вывести более информационное сообщение.
Псевдокод.

Presentation:
...
try{
 BussinessLogic.DoSomething();
}
catch(SqlException sqlEx){
   AddExceptionToLog(sqlEx);
   ShowError("DB Error");
}
catch(Exception ex){
   AddExceptionToLog(ex); 
   ShowError("General Error");
}
...



На сколько мне известно ловить именно Exception не рекомендуется, а ловить нужно только специфические exception.

Кто что думает по этому поводу и как вы поступаете в подобных ситуациях?


Думаю что только объект (модуль) в котором произошло исключение может точно знать по отношению к чему оно произошло, соответственно только этот объект может представить более детализированную информацию в виде исключения и передать его выше уровнем или запротоколировать дружественную к пользователю инфу. Объект выше уровнем ,который получит это исключение, может сгенерить на это свое исключение с детальной инфой актуальной для него + информация передаваемая с первичным исключением и тд. К концу прохождения цепочки, на уровне презентации получится исключение с дружественной инфой для пользователя. Ковсему прочему можно создать исключения вида
class FrendlyExeption:Exeption {...}
При возникновении исключения на одном из уровней в случае его значимости генерировать исключение Frendly типов , к ним со стороны системы будет особое внимание, например вывод пользователю на экран и тд.
Вобщем логику обработки исключений можно придумать как душе угодно.



Наверх
  



Общие вопросы программирования на ASP.NET

 Стоит ли ловить ExceptionLiteX  10 July 2008 16:37
 RE: Стоит ли ловить Exceptionsau  10 July 2008 18:08
 RE: Стоит ли ловить ExceptionBlackTigerAP  10 July 2008 19:08
 
Наш Киев

Apartments for Rent

Rambler's Top100
Рейтинг@Mail.ru
Идея: Dimon aka Manowar Программирование: Dimon aka Manowar Дизайн: Dan Lebedev
Хостинг от компании Parking.ru
Карта сайта