Ответ
В Java java.lang.Exception — это базовый класс для всех checked (проверяемых) исключений. Он напрямую наследует от java.lang.Throwable.
Иерархия:
Object → Throwable → Exception → ... (пользовательские checked-исключения, IOException, SQLException и т.д.)
Ключевые характеристики Exception:
- Checked исключение: Компилятор требует обязательной обработки таких исключений либо через блок
try-catch, либо через объявление в сигнатуре метода с помощьюthrows. - Предназначение: Обработка ожидаемых ошибок, от которых программа может восстановиться (например, отсутствие файла, проблемы с сетью, некорректный ввод).
Пример объявления класса Exception (упрощенно):
public class Exception extends Throwable {
public Exception() {}
public Exception(String message) { super(message); }
public Exception(String message, Throwable cause) { super(message, cause); }
// ... другие конструкторы и методы
}
Создание пользовательского checked-исключения:
// Наследуемся от Exception, чтобы создать проверяемое исключение
class ValidationException extends Exception {
public ValidationException(String errorMessage) {
super(errorMessage);
}
}
// Использование
public void processUser(String name) throws ValidationException {
if (name == null || name.isBlank()) {
throw new ValidationException("Name cannot be empty");
}
// ... логика
}
Важное отличие: Класс RuntimeException (и его наследники, например, NullPointerException, IllegalArgumentException) также наследует от Exception, но является unchecked (непроверяемым) исключением. Компилятор не требует его обязательной обработки.