Спецкурс "Современные практики разработки ПО",...
TRANSCRIPT
![Page 1: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/1.jpg)
Обработка исключительных ситуаций, журналирование и логи
Спецкурс. Занятие 3
![Page 2: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/2.jpg)
Исключительная ситуация –любая нештатная ситуация, в которой программа не может продолжить работу
Исключительные ситуации
![Page 3: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/3.jpg)
Причины:1. внутренние – ошибка в программе2. внешние – неверные входные данные, проблемы в конфигурации системы
Исключительные ситуации
![Page 4: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/4.jpg)
Что делать:1. предотвращать – для внутренних, конфигурационных2. обрабатывать – для неверных входных данных, недоступности ресурсов
Исключительные ситуации
![Page 5: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/5.jpg)
Защитное программирование –стиль, при котором во всех функциях (методах) обязательно проверяется предусловие и при невыполнении генерируется исключительная ситуация
Исключительные ситуации
![Page 6: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/6.jpg)
Защита от внутренних ошибок:1. утверждения (assert)2. модульные тесты
Исключительные ситуации
![Page 7: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/7.jpg)
Защита от неверных данных:1. проверка предусловия –только если просто2. в остальных случаях –отлавливание исключений
Исключительные ситуации
![Page 8: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/8.jpg)
Функция (метод) может:1. вернуть специальное значение (-1, NULL, пустой объект, код ошибки и т.д.)2. выбросить исключение (если язык поддерживает)
Исключительные ситуации
![Page 9: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/9.jpg)
Функция (метод) не должна:1. изменять глобальные объекты программы2. выводить информацию об ошибке в консоль или внешний файл
Исключительные ситуации
![Page 10: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/10.jpg)
Хорошее поведение функции (метода) в Java:1. возвращать пустые объекты, NULL2. выбрасывать исключения
Исключительные ситуации
![Page 11: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/11.jpg)
Важно:список выбрасываемых исключений – часть контракта функции (метода)
Исключительные ситуации
![Page 12: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/12.jpg)
Плохой стиль:выбрасывать из функции (метода) все возникшие в ней исключения
Исключительные ситуации
![Page 13: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/13.jpg)
В чем проблемы:1. вызывающий код должен подключать лишние библиотеки2. слишком большой список исключений
Исключительные ситуации
![Page 14: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/14.jpg)
В чем проблемы:3. раскрываются детали реализации4. затрудняется использование интерфейсов
Исключительные ситуации
![Page 15: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/15.jpg)
Хороший стиль:создать свои исключения по типам ситуаций и использовать их
Исключительные ситуации
![Page 16: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/16.jpg)
Журналирование –фиксация всех действий с целью восстановления данных после сбоя и возможности отката к предыдущему состоянию
Журналирование и логи
![Page 17: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/17.jpg)
Логгирование –фиксация только ошибочных ситуаций и важных этапов работы программы с целью поиска внутренних и конфигурационных ошибок
Журналирование и логи
![Page 18: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/18.jpg)
Логгирование в Java –библиотека log4j и надстройки над ней, вывод в консоль или файл
Журналирование и логи
![Page 19: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/19.jpg)
Уровни логгирования в Java:Fatal – фатальный сбойError – можно продолжать работуWarning – потенциальная ошибкаInfo – важный шаг, информацияDebug – отладочный вывод
Журналирование и логи
![Page 20: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/20.jpg)
Принято логгировать:1. пойманное исключение –Error, Fatal2. проблемы конфигурации –Warning, Error, Fatal
Журналирование и логи
![Page 21: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/21.jpg)
Принято логгировать:3. начало и завершение важных функций – особенно соединения с внешними системами – с сохранением отправленных и принятых данных - Info
Журналирование и логи
![Page 22: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/22.jpg)
Принято логгировать:4. все подряд с уровнем Debug
Журналирование и логи
![Page 23: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/23.jpg)
Помните:грамотно организованное логгирование сохранит вашу карму от лучей смерти команды поддержки
Журналирование и логи
![Page 24: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3](https://reader034.vdocuments.site/reader034/viewer/2022042715/559cb8a01a28abe9558b4644/html5/thumbnails/24.jpg)
Когда нужно журналирование:1. финансовые системы2. системы, от которых зависит жизнь и здоровье3. документооборот4. любые базы данных
Журналирование и логи