Является ли OutOfMemoryError непроверяемым (unchecked) исключением?

«Является ли OutOfMemoryError непроверяемым (unchecked) исключением?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, OutOfMemoryError является непроверяемым (unchecked) исключением.

Объяснение:

  • В Java все исключения, наследующие от Error или RuntimeException, являются непроверяемыми (unchecked). Компилятор не требует их обязательного объявления в throws или обработки в try-catch.
  • OutOfMemoryError наследуется от VirtualMachineError, который, в свою очередь, наследуется от Error.

Иерархия: Throwable ├── Error │ └── VirtualMachineError │ └── OutOfMemoryError // Unchecked └── Exception ├── RuntimeException // Unchecked └── ... (другие) // Checked

Практический смысл: OutOfMemoryError сигнализирует о критической проблеме в среде выполнения JVM (нехватка памяти в куче), которую обычно нельзя и не нужно обрабатывать в коде приложения. Вместо этого требуется настройка JVM (-Xmx), профилирование и исправление утечек памяти.