Выявите ошибки и исключения, которые могут возникать в приложении, и определите,
для которых из них требуется только уведомление пользователя. Обычно для таких
ошибок, как ошибки валидации, реализуется только локальное уведомление
пользователя. Однако такие ошибки, как неоднократная неудачная попытка
регистрации или выявление злонамеренных данных, должны протоколироваться, и
администраторы должны получать уведомления о них. Все исключения, возникающие
в ходе выполнения, и сбои приложения должны протоколироваться, и, если это
необходимо, администраторы должны уведомляться о них.
Выработайте общую стратегию обработки исключений. Она может включать такие
действия, как заключение исключений в другие исключения, характерные для
приложения или собственные, которые будут содержать дополнительные данные,
используемые при разрешении сбоев, или замена исключений для предотвращения
раскрытия конфиденциальных данных. Также реализуйте механизм выявления и
протоколирования необрабатываемых исключений. В реализации этих задач может
быть полезной инфраструктура управления исключениями, такая как разработанная
группой patterns & practices Enterprise Library.
Примите решение о том, как будет реализовано хранение данных исключений, их
передача в другие слои приложения в случае необходимости, и как будет выполняться
уведомление администраторов. Используйте инструменты или инфраструктуру
мониторинга, которая может собирать сведения о событиях с локального компьютера
и предоставлять отчет о состоянии приложения администраторам.
Обеспечьте очистку данных исключений, предоставляемых пользователям, чтобы
предотвратить возможность отображения или сохранения в файлах журнала или
аудита конфиденциальных данных. В случае необходимости шифруйте данные и
передавайте исключения и ошибки на другие уровни приложения по безопасным
каналам.
Перехватывайте только те исключения, которые можете обработать. Например,
перехватывайте исключения преобразования данных, которые могут возникать при
попытках преобразования значений null. Не используйте исключения для управления
бизнес-логикой.
Более подробно обработка исключений рассматривается в главе 17, «Сквозная
функциональность».
Удобство и простота обслуживания
Для всех приложений и компонентов исключительно важно максимально сократить затраты и
упростить обслуживание. Необходимо реализовать механизмы, снижающие расходы на
обслуживание, например, использовать шаблоны проектирования, обеспечивающие
разделение функциональных областей и слабое связывание компонентов. Насыщенные
клиентские приложения обычно располагаются на удаленных клиентских компьютерах и,
следовательно, их сложнее обслуживать, чем установленные на сервере приложениями.
Поэтому необходимо также учесть такие факторы, как развертывание, обновление,