Вопрос проверяет понимание того, как и когда следует обрабатывать исключения.
Checked-исключения проверяются компилятором и должны быть обработаны или проброшены. Unchecked-исключения возникают во время выполнения и не требуют обязательной обработки. Checked-исключения обычно связаны с внешними факторами. Unchecked — с ошибками в коде.
Различие между этими типами исключений принципиально влияет на дизайн кода.
Checked исключения — это исключения, которые компилятор требует обработать.
Их особенности:
Наследуются от Exception
Обязательны try-catch или throws
Связаны с IO, сетью, БД
Пример:
void read() throws IOException {
// работа с файлом
}
Unchecked исключения — это исключения времени выполнения.
Особенности:
Наследуются от RuntimeException
Не требуют обязательной обработки
Сигнализируют об ошибках логики
Пример:
int value = list.get(10); // IndexOutOfBoundsException
Checked исключения подходят для ожидаемых ошибок внешней среды, а unchecked — для выявления дефектов логики программы.