Ответ
Unchecked исключения (непроверяемые) — это исключения, унаследованные от RuntimeException. Компилятор не требует их явного объявления в throws или обработки в try-catch. Они обычно указывают на ошибки программиста или сбои в работе JVM.
Характеристики:
- Не проверяются на этапе компиляции.
- Наследуются от
java.lang.RuntimeException. - Представляют ошибки логики: доступ по индексу за пределами массива (
ArrayIndexOutOfBoundsException), обращение кnull(NullPointerException), неверный аргумент (IllegalArgumentException).
Пример:
public class UncheckedExample {
public int divide(int a, int b) {
// ArithmeticException (деление на ноль) — unchecked.
// Компилятор не заставит вас обработать этот случай.
return a / b;
}
public static void main(String[] args) {
UncheckedExample example = new UncheckedExample();
example.divide(10, 0); // Выбросит ArithmeticException во время выполнения.
}
}
| Сравнение с checked исключениями: | Критерий | Checked исключения | Unchecked исключения (Runtime) |
|---|---|---|---|
| Наследование | От Exception (но не от RuntimeException) |
От RuntimeException |
|
| Обработка | Обязательна (try-catch или throws) | Не обязательна | |
| Тип ошибки | Внешние, recoverable (например, IOException) |
Внутренние, логические, часто unrecoverable |
Best practice: Предотвращайте unchecked исключения с помощью валидации входных данных и соблюдения контрактов методов, а не полагайтесь на их обработку.