Upload
7bits
View
245
Download
1
Embed Size (px)
Citation preview
Стажировка-2015
Обработка исключительных ситуаций, журналирование и
логи
Занятие 10 (часть 2)
Стажировка-2015
Исключительная ситуация – любая нештатная ситуация, в которой программа не может продолжить работу
Исключительные ситуации
Стажировка-2015
Причины:1. внутренние – ошибка в программе2. внешние – неверные входные данные, проблемы в конфигурации системы
Исключительные ситуации
Стажировка-2015
Надежность программы – устойчивость к возникновению исключительных ситуаций
Исключительные ситуации
Стажировка-2015
Дружественность к пользователю – пользователю всегда понятно, что произошло и куда обращаться. Особенно важна для продуктов на свободном рынке
Исключительные ситуации
Стажировка-2015
Что делать:1. предотвращать – для внутренних, конфигурационных2. обрабатывать – для неверных входных данных, недоступности ресурсов
Исключительные ситуации
Стажировка-2015
Защитное программирование –стиль, при котором во всех функциях (методах) обязательно проверяется предусловие и при невыполнении генерируется исключительная ситуация
Исключительные ситуации
Стажировка-2015
Защита от внутренних ошибок:1. утверждения (assert)2. модульные тесты
Исключительные ситуации
Стажировка-2015
Защита от неверных данных:1. проверка предусловия – только если просто2. в остальных случаях – отлавливание исключений
Исключительные ситуации
Стажировка-2015
Функция (метод) может:1. вернуть специальное значение (-1, NULL, пустой объект, код ошибки и т.д.)2. выбросить исключение (если язык поддерживает)
Исключительные ситуации
Стажировка-2015
Функция (метод) не должна:1. изменять глобальные объекты программы2. выводить информацию об ошибке в консоль или внешний файл (без использования logger-а)
Исключительные ситуации
Стажировка-2015
Хорошее поведение функции (метода) в Java:1. возвращать пустые объекты2. возвращать NULL3. выбрасывать исключения
Исключительные ситуации
Стажировка-2015
Важно:список выбрасываемых исключений – часть контракта функции (метода)
Исключительные ситуации
Стажировка-2015
Плохой стиль:выбрасывать из функции (метода) все возникшие в ней исключения
Исключительные ситуации
Стажировка-2015
В чем проблемы:1. вызывающий код должен подключать лишние библиотеки2. слишком большой список исключений
Исключительные ситуации
Стажировка-2015
В чем проблемы:3. раскрываются детали реализации4. затрудняется использование интерфейсов
Исключительные ситуации
Стажировка-2015
Хороший стиль:создать свои исключения по типам ситуаций и использовать их
Исключительные ситуации
Стажировка-2015
Логгирование –фиксация только ошибочных ситуаций и важных этапов работы программы с целью поиска внутренних и конфигурационных ошибок
Журналирование и логи
Стажировка-2015
Логгирование в Java –библиотека log4j и надстройки над ней, вывод в консоль или файл
Журналирование и логи
Стажировка-2015
Уровни логгирования в Java:
Fatal – фатальный сбой, нельзя продолжать работуError – ошибка, можно продолжать работу
Журналирование и логи
Стажировка-2015
Уровни логгирования в Java:
Warning – потенциальная ошибкаInfo – важный шаг, информацияDebug – отладочный вывод
Журналирование и логи
Стажировка-2015
Принято логгировать:1. пойманное исключение – Error, Fatal2. проблемы конфигурации – Warning, Error, Fatal
Журналирование и логи
Стажировка-2015
Принято логгировать:3. начало и завершение важных функций – особенно соединения с внешними системами – с сохранением отправленных и принятых данных - Info
Журналирование и логи
Стажировка-2015
Принято логгировать:4. все подряд с уровнем Debug
Журналирование и логи
Стажировка-2015
Помните:грамотно организованное логгирование сохранит вашу карму от лучей смерти команды поддержки
Журналирование и логи
Стажировка-2015
Журналирование –фиксация всех действий с целью восстановления данных после сбоя и возможности отката к предыдущему состоянию
Журналирование и логи
Стажировка-2015
Когда нужно журналирование:1. финансовые системы2. системы, от которых зависит жизнь и здоровье3. документооборот4. любые базы данных
Журналирование и логи