Sobes.tech
Назад к вопросам
Junior — Middle
65

Должен ли метод выбрасывать проверяемое или непроверяемое исключение в случае возникновения ошибки?

Компании, где спрашивали
ОТП БанкОТП Банк

Ответ от нейросети

sobes.tech AI

Выбор между проверяемым (checked) и непроверяемым (unchecked) исключением зависит от контекста и дизайна API.

  • Проверяемые исключения (наследники Exception, кроме RuntimeException) требуют обязательной обработки или объявления в сигнатуре метода (throws). Их используют, когда ошибка ожидаема и может быть обработана вызывающим кодом (например, IOException).

  • Непроверяемые исключения (наследники RuntimeException) обычно сигнализируют о программных ошибках, которые не обязательно обрабатывать явно (например, NullPointerException).

Если метод может столкнуться с ошибкой, которую вызывающий код должен обязательно обработать, лучше использовать проверяемое исключение. Если ошибка указывает на неправильное использование API или внутреннюю ошибку, лучше выбросить непроверяемое исключение.

Пример:

public void readFile(String path) throws IOException { // проверяемое исключение
    // чтение файла
}

public void setAge(int age) {
    if (age < 0) {
        throw new IllegalArgumentException("Возраст не может быть отрицательным"); // непроверяемое
    }
    this.age = age;
}