28
Стажировка-2015 Обработка исключительных ситуаций, журналирование и логи Занятие 10 (часть 2)

Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

  • Upload
    7bits

  • View
    245

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Обработка исключительных ситуаций, журналирование и

логи

Занятие 10 (часть 2)

Page 2: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Исключительная ситуация – любая нештатная ситуация, в которой программа не может продолжить работу

Исключительные ситуации

Page 3: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Причины:1. внутренние – ошибка в программе2. внешние – неверные входные данные, проблемы в конфигурации системы

Исключительные ситуации

Page 4: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Надежность программы – устойчивость к возникновению исключительных ситуаций

Исключительные ситуации

Page 5: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Дружественность к пользователю – пользователю всегда понятно, что произошло и куда обращаться. Особенно важна для продуктов на свободном рынке

Исключительные ситуации

Page 6: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Что делать:1. предотвращать – для внутренних, конфигурационных2. обрабатывать – для неверных входных данных, недоступности ресурсов

Исключительные ситуации

Page 7: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Защитное программирование –стиль, при котором во всех функциях (методах) обязательно проверяется предусловие и при невыполнении генерируется исключительная ситуация

Исключительные ситуации

Page 8: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Защита от внутренних ошибок:1. утверждения (assert)2. модульные тесты

Исключительные ситуации

Page 9: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Защита от неверных данных:1. проверка предусловия – только если просто2. в остальных случаях – отлавливание исключений

Исключительные ситуации

Page 10: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Функция (метод) может:1. вернуть специальное значение (-1, NULL, пустой объект, код ошибки и т.д.)2. выбросить исключение (если язык поддерживает)

Исключительные ситуации

Page 11: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Функция (метод) не должна:1. изменять глобальные объекты программы2. выводить информацию об ошибке в консоль или внешний файл (без использования logger-а)

Исключительные ситуации

Page 12: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Хорошее поведение функции (метода) в Java:1. возвращать пустые объекты2. возвращать NULL3. выбрасывать исключения

Исключительные ситуации

Page 13: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Важно:список выбрасываемых исключений – часть контракта функции (метода)

Исключительные ситуации

Page 14: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Плохой стиль:выбрасывать из функции (метода) все возникшие в ней исключения

Исключительные ситуации

Page 15: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

В чем проблемы:1. вызывающий код должен подключать лишние библиотеки2. слишком большой список исключений

Исключительные ситуации

Page 16: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

В чем проблемы:3. раскрываются детали реализации4. затрудняется использование интерфейсов

Исключительные ситуации

Page 17: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Хороший стиль:создать свои исключения по типам ситуаций и использовать их

Исключительные ситуации

Page 18: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Логгирование –фиксация только ошибочных ситуаций и важных этапов работы программы с целью поиска внутренних и конфигурационных ошибок

Журналирование и логи

Page 19: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Логгирование в Java –библиотека log4j и надстройки над ней, вывод в консоль или файл

Журналирование и логи

Page 20: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Уровни логгирования в Java:

Fatal – фатальный сбой, нельзя продолжать работуError – ошибка, можно продолжать работу

Журналирование и логи

Page 21: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Уровни логгирования в Java:

Warning – потенциальная ошибкаInfo – важный шаг, информацияDebug – отладочный вывод

Журналирование и логи

Page 22: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Принято логгировать:1. пойманное исключение – Error, Fatal2. проблемы конфигурации – Warning, Error, Fatal

Журналирование и логи

Page 23: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Принято логгировать:3. начало и завершение важных функций – особенно соединения с внешними системами – с сохранением отправленных и принятых данных - Info

Журналирование и логи

Page 24: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Принято логгировать:4. все подряд с уровнем Debug

Журналирование и логи

Page 25: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Помните:грамотно организованное логгирование сохранит вашу карму от лучей смерти команды поддержки

Журналирование и логи

Page 26: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Журналирование –фиксация всех действий с целью восстановления данных после сбоя и возможности отката к предыдущему состоянию

Журналирование и логи

Page 27: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Когда нужно журналирование:1. финансовые системы2. системы, от которых зависит жизнь и здоровье3. документооборот4. любые базы данных

Журналирование и логи

Page 28: Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи

Стажировка-2015

Email: [email protected]: anna_tarasenkoWeb: 7bits.ru

Вопросы?