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

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

Исключение можно генерировать и в блоке catch, образуя тем самым цепочку исключений. Это обычно делается для того, чтобы изменить тип исключения. Это может быть понадобится, когда в крупном проекте если несколько подпроектов и нужно точно знать в какой части программы произошла исключительная ситуация. Ниже приведен каркас повторного генерирования:

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

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

try {
	код
} catch (ТипИсключения1 e) {
	обработчик исключений данного типа
	Throwable ne = new ТипИсключения2();
	ne.initCause(e);
	throw ne;
}

Теперь при перехвате последующего исключения предыдущее исключение можно извлечь следующим образом:

Throwable e = se.getCause();

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

На следующем шаге мы поговорим про блок finally

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