SlideShare a Scribd company logo
Спецкурс-2015
Обработка исключительных
ситуаций, запись логов и
журналов
Занятие 4 (часть 2)
Спецкурс-2015
Исключительная ситуация –
любая нештатная ситуация, в
которой программа не может
продолжить работу
Исключительные ситуации
Спецкурс-2015
Причины:
1. внутренние – ошибка в
программе
2. внешние – неверные входные
данные, проблемы в
конфигурации приложения
Исключительные ситуации
Спецкурс-2015
Надежность программы –
устойчивость к возникновению
исключительных ситуаций
Исключительные ситуации
Спецкурс-2015
Дружественность к
пользователю – пользователю
всегда понятно, что произошло и
куда обращаться. Особенно важна
для продуктов на свободном
рынке
Исключительные ситуации
Спецкурс-2015
Что делать:
1. предотвращать – для
внутренних, конфигурационных
2. обрабатывать – для неверных
входных данных, недоступности
ресурсов
Исключительные ситуации
Спецкурс-2015
Защитное программирование –
стиль, при котором во всех
функциях (методах) обязательно
проверяется предусловие и при
невыполнении генерируется
исключительная ситуация
Исключительные ситуации
Спецкурс-2015
Защитное программирование
часто приводит к громоздким
конструкциям в коде
Исключительные ситуации
Спецкурс-2015
Защита от внутренних
ошибок:
1. утверждения (assert) –
только в процессе разработки
2. модульные тесты
Исключительные ситуации
Спецкурс-2015
Исключение –
специальный объект, который
генерируется средой исполнения
и может быть «пойман» при
помощи конструкции try … catch
Исключительные ситуации
Спецкурс-2015
В Java все исключения реализуют
интерфейс Throwable и являются
наследниками одного из классов:
Exception, Error, RuntimeException.
Первый является отлавливаемым
в catch, остальные – нет
Исключительные ситуации
Спецкурс-2015
Защита от неверных данных:
1. проверка предусловия –
только если просто
2. в остальных случаях –
отлавливание исключений
Исключительные ситуации
Спецкурс-2015
Функция (метод) может:
1. вернуть специальное значение
(-1, NULL, пустую коллекцию, код
ошибки и т.д.)
2. выбросить исключение (если
язык поддерживает)
Исключительные ситуации
Спецкурс-2015
Функция (метод) не должна:
1. изменять глобальные объекты
программы
2. выводить информацию об
ошибке в консоль или внешний
файл (без использования logger-а)
Исключительные ситуации
Спецкурс-2015
Хорошее поведение метода в
Java:
1. возвращать пустые коллекции,
если ждем колленцию
2. возвращать NULL, если ждем
обхект
3. выбрасывать исключения
Исключительные ситуации
Спецкурс-2015
Важно:
список выбрасываемых
исключений – часть контракта
функции (метода)
Исключительные ситуации
Спецкурс-2015
Плохой стиль:
выбрасывать из функции
(метода) все возникшие в ней
исключения
Исключительные ситуации
Спецкурс-2015
В чем проблемы:
1. вызывающий код должен
подключать лишние библиотеки
2. слишком большой список
исключений
Исключительные ситуации
Спецкурс-2015
В чем проблемы:
3. раскрываются детали
реализации
4. затрудняется использование
интерфейсов – в интерфейсе надо
указать все исключения из
реализаций
Исключительные ситуации
Спецкурс-2015
Хороший стиль:
создать свои классы исключений
по типам ситуаций и использовать
их, пойманное в методе
исключение класть в поле cause
выбрасываемого исключения
Исключительные ситуации
Спецкурс-2015
Логгирование –
фиксация только ошибочных
ситуаций и важных этапов работы
программы с целью поиска
внутренних и конфигурационных
ошибок
Журналирование и логи
Спецкурс-2015
Логгирование в Java –
библиотека log4j и фасады над
ней (например, slf4j), позволяет
делать вывод в консоль, файл,
отправку email и т.д.
Журналирование и логи
Спецкурс-2015
Уровни логгирования в Java:
Fatal – фатальный сбой, нельзя
продолжать работу
Error – ошибка, можно
продолжать работу
Журналирование и логи
Спецкурс-2015
Уровни логгирования в Java:
Warning – потенциальная ошибка
Info – важный шаг, информация
Debug – отладочный вывод
Журналирование и логи
Спецкурс-2015
Принято логгировать:
1. пойманное исключение –
Error, Fatal
2. проблемы конфигурации –
Warning, Error, Fatal
Журналирование и логи
Спецкурс-2015
Принято логгировать:
3. начало и завершение важных
функций – особенно соединения с
внешними системами – с
сохранением отправленных и
принятых данных - Info
Журналирование и логи
Спецкурс-2015
Принято логгировать:
4. все подряд с уровнем Debug
Журналирование и логи
Спецкурс-2015
Уровень логгирования может быть
установлен для приложения,
пакета, класса. Все сообщения,
уровней ниже установленного, в
лог не попадают.
Журналирование и логи
Спецкурс-2015
Помните:
грамотно организованное
логгирование сохранит вашу
карму от лучей смерти
команды поддержки
Журналирование и логи
Спецкурс-2015
Журналирование –
фиксация всех действий с целью
восстановления данных после
сбоя и возможности отката к
предыдущему состоянию
Журналирование и логи
Спецкурс-2015
Когда нужно журналирование:
1. финансовые системы
2. системы, от которых зависит
жизнь и здоровье
3. документооборот
4. любые базы данных
Журналирование и логи
Спецкурс-2015
Email: at@7bits.it
Skype: anna_tarasenko
Web: 7bits.ru
Вопросы?

More Related Content

PPTX
Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...
PPTX
Спецкурс-2015. Занятие 05. Системы контроля версий
PDF
Выбираем стратегию создания бранчей
PPT
Test Automation as a way of Natural Evolution of a Project
PPTX
Dmitriy Kovalenko: Minimization of manual QA
PPTX
Нам нужны инструменты! Тестирование и мониторинг мобильного приложения BOOKMATE
PPTX
Использование анализатора кода SonarQube
PDF
Refactoring
Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...
Спецкурс-2015. Занятие 05. Системы контроля версий
Выбираем стратегию создания бранчей
Test Automation as a way of Natural Evolution of a Project
Dmitriy Kovalenko: Minimization of manual QA
Нам нужны инструменты! Тестирование и мониторинг мобильного приложения BOOKMATE
Использование анализатора кода SonarQube
Refactoring

What's hot (20)

PPT
Приемочные тесты на огурце
PDF
Модульное тестирование и TDD в .NET
PDF
CodeFest 2011. Климова Н. — FitNesse, полезный для проекта, или история одно...
PDF
Как работать с legacy проектом, которому больше10 лет? |Денис Воскобойник
PDF
Контроль за стилем кода — Кирилл Борисов
PPTX
А вы знаете что тестируют ваши тесты?
PPTX
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
PPTX
Eva Sokolyanskaya, QA Stand Up: Episode 4
PPT
сергей андреев
PDF
О пользе Open Source
PPTX
Как тестируют в гугле - обзор книги
PDF
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
PPTX
CI: Автоматизация сборки, развёртывания и тестирования
PDF
Дефицит ресурсов тестирования... или нет?
PDF
Возможна ли жизнь без тестировщика?
PPTX
[Expert Fridays] QA MeetUp - Альфия Хайретдинова (Provectus): Плюсы и минусы ...
PDF
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
PPTX
Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...
PPTX
Построение процесса тестирования
PPTX
Разработка и сопровождении авто-тестов (Selenium)
Приемочные тесты на огурце
Модульное тестирование и TDD в .NET
CodeFest 2011. Климова Н. — FitNesse, полезный для проекта, или история одно...
Как работать с legacy проектом, которому больше10 лет? |Денис Воскобойник
Контроль за стилем кода — Кирилл Борисов
А вы знаете что тестируют ваши тесты?
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Eva Sokolyanskaya, QA Stand Up: Episode 4
сергей андреев
О пользе Open Source
Как тестируют в гугле - обзор книги
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
CI: Автоматизация сборки, развёртывания и тестирования
Дефицит ресурсов тестирования... или нет?
Возможна ли жизнь без тестировщика?
[Expert Fridays] QA MeetUp - Альфия Хайретдинова (Provectus): Плюсы и минусы ...
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...
Построение процесса тестирования
Разработка и сопровождении авто-тестов (Selenium)
Ad

Viewers also liked (20)

PPTX
Курс Java-2016. Занятие 13. Spring
PPTX
Курс Java-2016. Занятие 01. Введение в Java как технологию
PPTX
Спецкурс-2015. Занятие 03. Абстракции, именование, документирование.
PDF
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
PPTX
курс Java 2016. занятие 03. интерфейсы, generic, исключения
PPTX
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
PDF
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
PPTX
Стажировка-2015. Разработка. Занятие 14. Twitter Flight
PDF
Стажировка-2015. Разработка. Занятие 13. Сборка фронтенда
PDF
Курс Java-2016. Занятие 08. Итераторы, многопоточность
PDF
Курс Java-2016. Занятие 12. DBMS, JDBC
PDF
Курс Java-2016. Занятие 11. Servlets, JSP
PDF
Курс Java-2016. Занятие 10. Reflection, mock
PPT
Maven как средство сборки проекта
PDF
Иван Крутов - Автоматизация сборки Java-проекта
PDF
Стажировка 2015. Дизайн. Занятие 5. Адаптивный web-дизайн
PDF
Стажировка-2015. Дизайн. Занятие 4 (2 часть). Цвет в web-дизайне
PPTX
Спецкурс 2014, занятие 5 (часть 1). Исключения и логи
PPTX
Стажировка-2015. Тестирование. Занятие 2. Планирование процесса тестирования.
PPTX
Стажировка-2014, занятие 4. Планирование процесса тестирования.
Курс Java-2016. Занятие 13. Spring
Курс Java-2016. Занятие 01. Введение в Java как технологию
Спецкурс-2015. Занятие 03. Абстракции, именование, документирование.
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
курс Java 2016. занятие 03. интерфейсы, generic, исключения
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
Стажировка-2015. Разработка. Занятие 14. Twitter Flight
Стажировка-2015. Разработка. Занятие 13. Сборка фронтенда
Курс Java-2016. Занятие 08. Итераторы, многопоточность
Курс Java-2016. Занятие 12. DBMS, JDBC
Курс Java-2016. Занятие 11. Servlets, JSP
Курс Java-2016. Занятие 10. Reflection, mock
Maven как средство сборки проекта
Иван Крутов - Автоматизация сборки Java-проекта
Стажировка 2015. Дизайн. Занятие 5. Адаптивный web-дизайн
Стажировка-2015. Дизайн. Занятие 4 (2 часть). Цвет в web-дизайне
Спецкурс 2014, занятие 5 (часть 1). Исключения и логи
Стажировка-2015. Тестирование. Занятие 2. Планирование процесса тестирования.
Стажировка-2014, занятие 4. Планирование процесса тестирования.
Ad

Similar to Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запись логов и журналов (20)

PPTX
Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи.
PPTX
Стажировка-2014, занятие 2 (часть 2). Исключения и логи
PPTX
Стажировка-2013, разработчики, занятие 5. Исключительные ситуации, журналиров...
PPTX
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3
PPTX
Майстер-клас "Автоматизоване тестування. З чого почати?" (частина 1)
PPTX
Mva stf module 5 - rus
PDF
Построение систем автоматического протоколирования Си/Си++ кода
PPT
Внедрение тестирования в Scrum
PPT
Внедрение тестирования в Scrum
PPTX
Software craftsmanship meetup #9. Логирование, мониторинг, оповещение
PPT
Testing mistakes
PPTX
Инструменты для проведения конкурентного анализа программных продуктов | Вла...
PPTX
Mva stf module 3 - rus
PPTX
История одной трансформации: как Magento 1 разработчику быстро переориентиров...
PPTX
Mva stf module 6 - rus
PPT
PDF
Денис Бесков стандарт менеджера продукта #pcampmsk
PDF
Software testing in practice
PPTX
Автоматизация тестирования: почему умирают проекты?
PPTX
Автоматизация Тестирования - Почему умирают проекты?
Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи.
Стажировка-2014, занятие 2 (часть 2). Исключения и логи
Стажировка-2013, разработчики, занятие 5. Исключительные ситуации, журналиров...
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3
Майстер-клас "Автоматизоване тестування. З чого почати?" (частина 1)
Mva stf module 5 - rus
Построение систем автоматического протоколирования Си/Си++ кода
Внедрение тестирования в Scrum
Внедрение тестирования в Scrum
Software craftsmanship meetup #9. Логирование, мониторинг, оповещение
Testing mistakes
Инструменты для проведения конкурентного анализа программных продуктов | Вла...
Mva stf module 3 - rus
История одной трансформации: как Magento 1 разработчику быстро переориентиров...
Mva stf module 6 - rus
Денис Бесков стандарт менеджера продукта #pcampmsk
Software testing in practice
Автоматизация тестирования: почему умирают проекты?
Автоматизация Тестирования - Почему умирают проекты?

More from 7bits (14)

PDF
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
PDF
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
PDF
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
PDF
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
PDF
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
PDF
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT
PDF
Курс Java-2016. Занятие 09. Web
PDF
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
PPTX
Курс Java-2016. Занятие 05. Тестирование и Java
PDF
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub
PPTX
Стажировка-2015. Разработка. Занятие 12. Транзакции в БД, работа с БД из прил...
PDF
Стажировка-2015. Разработка. Занятие 11. Безопасность web-приложений
PPTX
Стажировка-2015. Разработка. Занятие 10 (часть 1). Конфиги, сборка, автотесты
PDF
Стажировка 2015. Разработка. Занятие 9. BEM
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT
Курс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 05. Тестирование и Java
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub
Стажировка-2015. Разработка. Занятие 12. Транзакции в БД, работа с БД из прил...
Стажировка-2015. Разработка. Занятие 11. Безопасность web-приложений
Стажировка-2015. Разработка. Занятие 10 (часть 1). Конфиги, сборка, автотесты
Стажировка 2015. Разработка. Занятие 9. BEM

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