Ответ
Корневым классом для всех исключений и ошибок в Java является java.lang.Throwable. От него наследуются два ключевых подкласса:
Error: Представляет критические, невосстанавливаемые ошибки времени выполнения (например,OutOfMemoryError,StackOverflowError). Обычно их не перехватывают.Exception: Базовый класс для исключительных ситуаций, которые программа может обработать. Включает проверяемые (checked, например,IOException) и непроверяемые (unchecked, например,RuntimeException) исключения.
Почему Throwable — главный? Все исключения наследуют его методы, что обеспечивает единый интерфейс для обработки:
try {
// Код, который может выбросить исключение
int result = 10 / 0;
} catch (ArithmeticException e) { // ArithmeticException наследуется от Throwable
// Используем методы Throwable
System.out.println("Сообщение: " + e.getMessage());
System.out.println("Причина: " + e.getCause());
e.printStackTrace(); // Вывод трассировки стека
}
Ключевые методы Throwable:
String getMessage()– возвращает детальное сообщение об ошибке.void printStackTrace()– печатает трассировку стека в стандартный поток ошибок.Throwable getCause()– возвращает исключение-причину (если есть).