Throwable.getCause()
Возвращает исходное исключение, которое было обёрнуто в текущее.
Доступно с: Java 1.4
Синтаксис
public Throwable getCause()Возвращаемое значение
ThrowableИсключение-причина или `null`.
Примеры
Обёртка исключения с сохранением причины:
class ConfigException extends RuntimeException {
ConfigException(String message, Throwable cause) {
super(message, cause);
}
}
int readPort(String value) {
try {
return Integer.parseInt(value);
} catch (NumberFormatException e) {
throw new ConfigException("Bad port setting", e);
}
}
void main() {
try {
readPort("80a");
} catch (ConfigException e) {
IO.println(e.getMessage());
IO.println("cause: " + e.getCause());
}
}Результат:
Bad port setting
cause: java.lang.NumberFormatException: For input string: "80a"Примечания
Когда исключение перехватывают и бросают другое, исходное нужно передать в конструктор вторым аргументом — иначе информация о настоящей причине потеряется. printStackTrace() печатает всю цепочку причин в строках Caused by:.
См. также
- Exception — Базовый класс исключений, которые программа может перехватить и обработать.
- UncheckedIOException — Непроверяемая обёртка над `IOException` — нужна там, где проверяемые исключения запрещены, например в лямбдах.
- Throwable.getMessage() — Возвращает текст сообщения исключения.
В учебнике
- Свои исключения — Как создать собственный класс исключения в Java — наследование от Exception и RuntimeException, сообщение, причина и дополнительные поля.