- •Исключительные
- •План лекции
- •Э… Проблемы
- •Обработка ошибок
- •Подходы к обработке ошибок
- •Механизм обработки
- •Поиск обработчика исключения
- •Классификация исключений
- •Классификация исключений
- •Базовые классы исключений
- •Объявление исключений
- •Особенности объявления исключений
- •Особенности объявления исключений
- •Вызов метода со списком исключений
- •Важное замечание
- •Отлов исключений
- •Блок try
- •Блок catch
- •Блок catch
- •Блок finally
- •Выбрасывание исключений
- •Создание типов исключений
- •Отладка приложений
- •Преимущества от использования исключений
- •Наследование
- •План лекции
- •Наследование в Java
- •Расширение классов
- •Конструкторы дочерних классов
- •Порядок создания объекта
- •Забавный пример
- •И его результат
- •Совпадение имен методов в родительском и дочернем классах
- •Переопределение методов
- •Переопределение методов
- •Переопределение методов
- •Переопределение методов
- •Сокрытие полей
- •Еще пример
- •И его результат
- •Служебное слово super
- •Сокрытие статических членов
- •Сокрытие статических методов
- •Замечание
- •Завершенные методы и классы
- •Абстрактные классы и методы
- •Контракт класса
- •Наследование
- •Понятие интерфейса
- •Наследование в Java
- •Объявление интерфейсов
- •Константы в интерфейсах
- •Методы в интерфейсах
- •Расширение интерфейсов интерфейсами
- •Реализация интерфейсов классами
- •Интерфейс или абстрактный класс?
- •Интерфейс или абстрактный класс?
- •Ссылки интерфейсных типов
- •Использование типов
- •Пустые интерфейсы
- •Спасибо за внимание!
- •Дополнительные источники
Исключительные
ситуации
© Составление, Будаев Д.С., Гаврилов А.В., 2013
Лекция 4.1
УНЦ «Инфоком» Самара
2013
План лекции
Возникновение ошибок и подходы к их обработке
Исключения и их классификация
Выбрасывание исключений
Отлов исключений
Создание типов исключений
Подходы к отладке приложений
2
Э… Проблемы
В процессе выполнения программные приложения встречаются с ситуациями, приводящими к возникновению ошибок
Ошибки бывают различной степени тяжести
Ошибки необходимо каким-либо способом учитывать и обрабатывать
Ошибки возникают в случае:
некорректного ввода данных
сбоев оборудования
нарушения ограничений среды
выполнения программного кода
3
Обработка ошибок
Обеспечение стабильности и надежности работы программы
Дружественное поведение конечного
программного продукта |
Противоречие! |
|
Безопасность в процессе выполнения
Удобство при написании программного кода
4
Подходы к обработке ошибок
Возвращение методом кода ошибки
Возвращается только код ошибки
int errNum = firstMethod(); if (errNum == -1) {
// обработка 1-ой ошибки
}
else if(errNum == -2) {
// обработка 2-ой ошибки
}
Используются «свободные» значения возвращаемого типа
if ((ans = sqrt(val)) < 0) { // Обработка ошибки
}
else {
// Продолжение вычислений
}
Встроенный в язык механизм проверки и обработки
try { someBusinessLogic();
...
anotherBusinessLogic()
}
catch(Exception1 e1) {
// обработка 1-ой ошибки
}
...
catch(ExceptionN eN) {
// обработка N-ой ошибки
}
finally {
//выполнение завершающих
//работу действий
}
5
Механизм обработки
Создается и «выбрасывается» объект исключения, содержащий информацию об ошибке
Выполнение текущего потока вычислений приостанавливается
Завершается выполнение блоков и методов в цепочке вызовов вплоть до кода, отлавливающего исключение
Поток вычислений возобновляется, причем выполняется код обработчика исключения
6
Поиск обработчика исключения
Стэк вызова методов
main(String[] args)
obj1.method1()
Class1.staticMethod()
obj2.method145()
obj67.method35()
Exception
JVM
не найден
поиск обработчика |
Class1.staticMethod() |
поиск обработчика |
найден |
|
|
|
obj48.method565() |
|
|
Exception |
|
7
Классификация исключений
Объявляемые
(проверяемые, checked)
Носят предсказуемый характер
Указываются в объявлении метода
Наследуют от класса
Exception
Необъявляемые
(непроверяемые, unchecked)
Обусловлены логикой кода
Не указываются в объявлении метода
Наследуют от классов
RuntimeException,
Error
8
Классификация исключений
Синхронные
Непосредственный итог выполнения определенной инструкции
Могут быть объявляемыми и необъявляемыми
Асинхронные
Не зависят от выполняемой инструкции
Внутренние ошибки JVM
Результат работы deprecated методов
9
Базовые классы исключений
10