Шаг 55.
Язык программирования Java.
Перехват исключений

На этом шаге мы поговорим про перехват исключений

На прошлом шаге мы рассмотрели как генерировать исключения. Но этих знаний не достаточно. Нужно уметь перехватывать и обрабатывать исключения.

Если исключение возникает и нигде не перехватывается, то программа прекращает работу, выводя на консоль сообщение о типе исключения и содержимое стека вызовов функций (про него мы поговорим позднее).

Перехват исключений в Java осуществляется в блоке операторов try/catch. В простейшем случае этот блок имеет следующий вид:

try {
	код
} catch (ТипИсключения e) {
	обработчик исключений данного типа
}

Если фрагмент кода в блоке try генерирует исключение типа, указанного в заголовке блока catch, то происходит следующее:

  1. Программа пропускает оставшуюся часть кода в блоке try.
  2. Программа выполняет код обработчик в блоке catch.

Если код в блоке try не генерирует исключение, то программа пропускает блок catch. И наконец, если в блоке try генерируется исключение, отличного по типу, указанного в блоке catch, то выполнение программы немедленно прекращается.

В блоке try можно перехватить несколько исключений, обработав их по отдельности. Для каждого типа исключения следует предусмотреть свой блок catch следующим образом.

try {
	код
} catch (ТипИсключения1 e) {
	обработчик исключений данного типа
} catch (ТипИсключения2 e) {
	обработчик исключений данного типа
} catch (ТипИсключения3 e) {
	обработчик исключений данного типа
}

Объект исключения содержит сведения о нем. Для того чтобы получить дополнительные сведения об этом объекте из подробного сообщения об ошибке, достаточно сделать вызов e.getMessage(), для того чтобы получить конкретный тип объекта исключения, - вызов e.getClass().getName().

Начиная с версии Java SE7, разнотипные исключения можно перехватывать в одном и том же блоке catch. Сделать это можно следующим образом:

try {
	код
} catch (ТипИсключения1 | ТипИсключения2 e) {
	обработчик исключений данного типа
} catch (ТипИсключения3 e) {
	обработчик исключений данного типа
} catch (ТипИсключения4 e) {
	обработчик исключений данного типа
}

На следующем шаге мы поговорим про повторное генерирование исключений

Предыдущий шаг Содержание Следующий шаг