
Лекции Java / 04. Исключительные ситуации и их обработка. Наследование и его особенности.pptx
.pdf
Самарский государственный аэрокосмический университет имени академика С.П. Королёва
Лекция 4.1
Исключительные ситуации и их обработка
© Составление, Гаврилов А.В., 2013
Самара
2013

План лекции
nВозникновение ошибок и подходы к их обработке
nМеханизм обработки исключений
nКлассификация исключений
nОбъявляемые исключения и их особенности
nОтлов исключений
nВыбрасывание исключений
nСоздание типов исключений
nОтладка приложений
Самарский государственный аэрокосмический университет имени академика С.П. Королёва |
2 |

Э… Проблемы
nВ процессе выполнения программные приложения встречаются с ситуациями, приводящими к возникновению ошибок
•Ошибки бывают различной степени тяжести
•Ошибки необходимо каким-либо способом учитывать и обрабатывать
n Ошибки возникают в случае:
•некорректного ввода данных
•сбоев оборудования
•нарушения ограничений среды
•выполнения программного кода
Самарский государственный аэрокосмический университет имени академика С.П. Королёва |
3 |

Обработка ошибок
nОбеспечение стабильности и надежности работы программы
nДружественное поведение конечного
программного продукта Противоречие!
n Безопасность в процессе
n
кода
Самарский государственный аэрокосмический университет имени академика С.П. Королёва |
4 |

Подходы к обработке ошибок
nВозвращение методом кода ошибки
• Возвращается только код ошибки
int errNum = firstMethod(); if (errNum == -1) {
// обработка 1-ой ошибки
}
else if(errNum == -2) { // обработка 2-ой ошибки
}
•Используются «свободные» значения возвращаемого типа
if ((ans = sqrt(val)) < 0) { // Обработка ошибки
}
else {
// Продолжение вычислений
}
nВстроенный в язык механизм проверки и обработки
try { someBusinessLogic();
...
anotherBusinessLogic()
}
catch(Exception1 e1) {
// обработка 1-ой ошибки
}
...
catch(ExceptionN eN) {
// обработка N-ой ошибки
}
finally {
//выполнение завершающих
//работу действий
}
Самарский государственный аэрокосмический университет имени академика С.П. Королёва |
5 |

Механизм обработки
nСоздается и «выбрасывается» объект исключения, содержащий информацию об ошибке
nВыполнение текущего потока вычислений приостанавливается
nЗавершается выполнение блоков и методов в цепочке вызовов, пока не будет найден код, отлавливающий исключение
nВыполнение потока вычислений возобновляется, причем выполняется код обработчика исключения
Самарский государственный аэрокосмический университет имени академика С.П. Королёва |
6 |

Поиск обработчика исключения
Стэк вызова методов
main(String[] args)
obj1.method1()
Class1.staticMethod()
obj2.method145()
obj67.method35()
Exception
найден
поиск |
обработчика |
JVM
не найден
Class1.staticMethod() |
поиск обработчика |
|
|
obj48.method565() |
|
Exception |
|
Самарский государственный аэрокосмический университет имени академика С.П. Королёва |
7 |

Классификация исключений
Объявляемые |
Необъявляемые |
n Носят предсказуемый |
n Обусловлены логикой |
характер |
кода |
n Указываются в |
n Не указываются в |
объявлении метода |
объявлении метода |
n Наследуют от класса |
n Наследуют от классов |
Exception |
RuntimeException, |
|
Error |
Самарский государственный аэрокосмический университет имени академика С.П. Королёва |
8 |

Классификация исключений
Синхронные
nНепосредственный итог выполнения определенной инструкции
nМогут быть объявляемыми и необъявляемыми
Асинхронные
nНе зависят от выполняемой инструкции
nВнутренние ошибки
JVM
nРезультат работы deprecated методов
Самарский государственный аэрокосмический университет имени академика С.П. Королёва |
9 |

Базовые классы исключений
Throwable
Error |
Exception |
... |
RuntimeException |
... |
...
Самарский государственный аэрокосмический университет имени академика С.П. Королёва |
10 |