Добрый день.
Задумался над таким вопросом стоит ли ловить все 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.
Кто что думает по этому поводу и как вы поступаете в подобных ситуациях?
Mastering .NET doesn`t make you a geek. It makes you a geek worthy of a raise. (с) Jeffrey Richter
Данное сообщение получено с сайта GotDotNet.RU
|