Ответ
Unchecked исключения (наследники RuntimeException) не требуют обязательной обработки в коде. С ними часто сталкиваются в работе:
-
NullPointerException— самая частая проблема при работе с неинициализированными ссылками.String str = null; int length = str.length(); // NullPointerException -
IllegalArgumentException— передача недопустимого аргумента в метод.public void setAge(int age) { if (age < 0) { throw new IllegalArgumentException("Возраст не может быть отрицательным"); } this.age = age; } -
IndexOutOfBoundsException/ArrayIndexOutOfBoundsException— обращение к несуществующему индексу массива или коллекции. -
ClassCastException— неудачное приведение типов во время выполнения.Object obj = "Some string"; Integer num = (Integer) obj; // ClassCastException -
NumberFormatException— ошибка преобразования строки в число.int num = Integer.parseInt("123abc"); // NumberFormatException -
ConcurrentModificationException— изменение коллекции во время итерации по ней (кроме использования итератора).
Почему они unchecked? Эти исключения обычно указывают на ошибки программиста (баги), которые можно и нужно исправлять в коде, а не обрабатывать. Их проверка на этапе компиляции часто нецелесообразна.