Ответ
Да. RuntimeException является прямым подклассом Exception.
Иерархия исключений:
Throwable
├── Error (непроверяемые, например, OutOfMemoryError)
└── Exception
├── IOException, SQLException и др. (проверяемые исключения)
└── RuntimeException (непроверяемые исключения)
├── NullPointerException
├── IllegalArgumentException
└── ...
Ключевое отличие — проверяемость (checked vs unchecked):
Exception(кромеRuntimeException): Проверяемые (checked). Компилятор требует их обработки черезtry-catchили объявления вthrows.// Проверяемое исключение - требует обработки public void readFile() throws IOException { // код, который может выбросить IOException }RuntimeExceptionи его наследники: Непроверяемые (unchecked). Обработка не обязательна.// Непроверяемое исключение - обработка не требуется public void calculate(String str) { int length = str.length(); // Может выбросить NullPointerException }Почему так?
RuntimeExceptionобозначает ошибки программиста (например, обращение кnull, неверный аргумент), которые часто невозможно осмысленно обработать в коде.