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

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

Выбор между проверяемым (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;
}

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее