В чем разница между checked и unchecked исключениями
Исключения (exceptions) важная часть обработки ошибок. Есть две основные категории: проверяемые (checked) и непроверяемые (unchecked).
Проверяемые исключения (Checked Exceptions):
- Должны быть явно обработаны в коде с помощью блока `try-catch` или должны быть указаны в сигнатуре метода с помощью ключевого слова `throws`.
- Они представляют ошибки, которые могут возникнуть во время выполнения программы и которые во многих случаях программист может предвидеть и обработать. Например, ошибка чтения файла, когда файл не существует.
- Примеры классов проверяемых исключений включают `IOException`, `FileNotFoundException`, `ClassNotFoundException` и другие.
Пример:
try {
FileInputStream file = new FileInputStream("non_existent_file.txt");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
В этом примере `FileNotFoundException` является проверяемым исключением, и его необходимо обрабатывать в блоке `try-catch`.
Непроверяемые исключения (Unchecked Exceptions):
- Не требуют обязательной обработки в коде. Они обычно возникают из-за ошибок программирования, таких как деление на ноль или доступ к элементу за пределами массива.
- К ним относятся ошибки времени выполнения (RuntimeException) и ошибки (Error).
- Примеры включают `NullPointerException`, `IndexOutOfBoundsException`, `ArithmeticException` и другие.
Пример:
int result = 10 / 0; // Приводит к ArithmeticException
Здесь `ArithmeticException` является непроверяемым исключением, вызванным делением на ноль.
Почему разделение на checked и unchecked?
Разделение позволяет управлять потенциальными ошибками, которые могут быть исправлены, и отличать их от ошибок времени выполнения, которые чаще всего являются результатом ошибок в коде. Это способствует написанию более надежного и устойчивого к ошибкам кода.
Feb. 22, 2024, easyoffer
В Java все исключения делятся на два типа:
- checked (контролируемые/проверяемые исключения) должны обрабатываться блоком
catch
или описываться в заголовке метода (например,throws IOException
). Наличие такого обработчика/модификатора в заголовке метода проверяется на этапе компиляции; - unchecked (неконтролируемые/непроверяемые исключения), к которым относятся ошибки
Error
(например,OutOfMemoryError
), обрабатывать которые не рекомендуется и исключения времени выполнения, представленные классомRuntimeException
и его наследниками (например,NullPointerException
), которые могут не обрабатываться блокомcatch
и не быть описанными в заголовке метода.
Oct. 21, 2023, Источник
Примеры ответов:
- Техническое собеседование junior Jav…
- Собеседование Java Junior | Jetbulb
- Собеседование Java Junior | Никита В…
- Собеседование Java Junior | Алексей …
- Техническое интервью Java Developer …
- Техническое интервью Java Developer …
- Техническое интервью Java Developer …
- Техническое интервью Java Developer …
- Техническое интервью Java Developer …
- Техническое интервью Java Developer …
- Техническое интервью Java Developer …
- Техническое интервью Java Developer …