Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Java.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
3.45 Mб
Скачать

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

Тема 4.1 Исключения в Java

Исключение в Java – это объект, который описывает исключительную ситуацию, воз­никшую в каком-либо участке программного кода. Когда возникает ис­ключительная ситуация, создается объект класса Exception или одного из его потомков. Этот объект попадает в блок catch, обрабатывающий данный тип исключительной ситуации. Исключения могут возбуждаться и «вруч­ную» для того, чтобы сообщить о некоторых нештатных ситуациях.

К механизму обработки исключений в Java имеют отношение 5 ключевых слов: – try, catch, throw, throws и finally. Схема работы этого механизма следующая. Тот код, в котором необходимо отслеживать ошибки помещается в блок try, как только происходит ошибка, часть кода от строки с ошибкой до конца блока try пропускается и попадаем в блок catch, соответствующий данному типу ошибки. Тот код, который необходимо выполнить вне зависимо от того произошли ошибки или нет помещается в блок finally(сохранение данных, закрытие соединений с БД и т.д.). При помощи ключевого слова throw можно вручную сгенерировать исключение(повторная генерация исключений и создание своего собственного исключения – потомка класса Exception). Слово throws используется для указания типов исключений, которые могут возникнуть в данном методе.

Ниже приведена общая форма блока обработки исключений.

try {

// блок кода

} 

catch (ТипИсключения1 е) {

// обработчик исключений типа ТипИсключения1

} 

catch (ТипИсключения2 е) {

// обработчик исключений типа ТипИсключения2

  throw(e)   // повторное возбуждение исключения

} 

finally { 

//код, который выполняется всегда

}

 

Тема 4.2 Типы исключений

В вершине иерархии исключений стоит класс Throwable. Каждый из типов исключений является подклассом класса Throwable. Два непосредственных наследника класса Throwable делят иерархию подклассов исключений на две различные ветви. Один из них – класс Ехception – используется для описания исключительных ситуации, кото­рые возникают в ходе выполнения вашей программы. Другая ветвь дерева подклассов Throwable – класс Error, который предназначен для описания исклю­чительных ситуаций, которые могут возникнуть из-за сбоев в виртуальной Java машине.

Тема 4.3 Неперехваченные исключения

Объекты-исключения автоматически создаются исполняющей средой Java в результате возникновения определенных исключительных состо­яний. В листинге 4.1 приведен пример автоматического создания исключения в случае деления на ноль.

Листинг 4.1

public class Main {

public static void main(String[] args) {

int x = 10 / 0;

}

В ходе выполнения данной программы получим:

Exception in thread "main" java.lang.ArithmeticException: / by zero

at javaapplication1.Main.main(Main.java:4)

 

Обратите внимание на тот факт что типом возбужденного исклю­чения был не Exception и не Throwable. Это подкласс класса Exception, а именно: ArithmeticException, поясняющий, какая ошибка возникла при выполнении программы. Вот другая версия того же класса, в кото­рой возникает та же исключительная ситуация, но на этот раз не в про­граммном коде метода main.

Листинг 4.2 

public class Main {

public static void metod() {

int x = 10 / 0;

}

public static void main(String[] args) {

metod();

}

Вывод этой программы показывает, как обработчик исключений ис­полняющей системы Java выводит содержимое всего стека вызовов.

Exception in thread "main" java.lang.ArithmeticException: / by zero

at javaapplication1.Main.metod(Main.java:4)

at javaapplication1.Main.main(Main.java:7) 

Если создан объект-исключение и он не отловлен, то он попадает в список системных ошибок и программа останавливается.