В Java для обработки ошибок используются:
Исключения (Exceptions): Механизм для обработки исключительных ситуаций, возникающих во время выполнения программы. Подразделяются на:
try-catch блоке или с помощью throws в сигнатуре метода). Наследуются от Exception.NullPointerException). Компилятор не требует явной обработки. Наследуются от RuntimeException.OutOfMemoryError). Наследуются от Error.Конструкции для обработки исключений:
try-catch: Используется для перехвата и обработки исключений.
java
finally: Блок кода, который выполняется всегда, независимо от того, было ли выброшено исключение или нет. Часто используется для освобождения ресурсов (например, закрытия потоков).
java
try-with-resources: Автоматически закрывает ресурсы (реализующие интерфейс AutoCloseable) после выполнения блока try.
java
throw: Используется для явного выброса исключения.
java
throws: Указывается в сигнатуре метода, если метод может выбросить checked exception. Информирует вызывающий код о возможных исключениях.
java
Возвращаемые значения (менее предпочтительно для ошибок выполнения): В некоторых случаях, особенно для ожидаемых условий, могут использоваться специальные возвращаемые значения, чтобы указать на результат операции (например, null, отрицательное число для кодов ошибок). Однако, для исключительных ситуаций во время выполнения, предпочтительнее использовать исключения.
Таблица сравнения Checked и Unchecked Exceptions:
| Признак | Checked Exceptions | Unchecked Exceptions |
|---|---|---|
| Наследование | Exception | RuntimeException |
| Требование обработки | Компилятор требует явной | Компилятор не требует явной |
| Типичные случаи | Ошибки ввода/вывода, SQL | NullPointerException, ArrayIndexOutOfBoundsException |
В продакшн-коде важно правильно регистрировать (логировать) информацию об исключениях, чтобы облегчить отладку.