В Java есть два типа исключений:
1) Проверено: исключения, которые проверяются во время компиляции. Если какой-то код внутри метода выдает проверенное исключение, тогда метод должен либо обработать исключение, либо указать его с помощью ключевого слова throws .
Например, рассмотрим следующую Java-программу, которая открывает файл в папке «C: /test/a.txt» и печатает первые три строки. Программа не компилируется, потому что функция main () использует FileReader (), а FileReader () генерирует проверенное исключение FileNotFoundException . Он также использует методы readLine () и close (), и эти методы также генерируют проверенное исключение IOException
|
Выход:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown at Main.main(Main.java:5)
Чтобы исправить вышеуказанную программу, нам нужно либо указать список исключений с помощью throws, либо нам нужно использовать блок try-catch. Мы использовали броски в приведенной ниже программе. Поскольку FileNotFoundException является подклассом IOException , мы можем просто указать IOException в списке бросков и сделать вышеописанную программу безошибочной.
|
Вывод: первые три строки файла «C: /test/a.txt»
2) Не проверены исключения, которые не проверяются во время компиляции. В C ++ все исключения не проверяются, поэтому компилятор не заставляет их обрабатывать или указывать исключение. Программисты должны быть цивилизованными и определять или ловить исключения.
В Java исключения в классах Error и RuntimeException являются непроверенными исключениями, все остальное в throwable проверяется.
+-----------+ | Throwable | +-----------+ / \ / \ +-------+ +-----------+ | Error | | Exception | +-------+ +-----------+ / | \ / | \ \________/ \______/ \ +------------------+ unchecked checked | RuntimeException | +------------------+ / | | \ \_________________/ unchecked
Рассмотрим следующую Java-программу. Он прекрасно компилируется, но при запуске выдает исключение ArithmeticException . Компилятор позволяет его компилировать, потому что ArithmeticException является непроверенным исключением.
|
Выход:
Exception in thread "main" java.lang.ArithmeticException: / by zero at Main.main(Main.java:5) Java Result: 1
Почему два типа?
Посмотрите Непроверенные Исключения — Противоречие для деталей.
Должны ли мы сделать наши исключения проверенными или непроверенными?
Ниже приводится нижняя строка из документов Java
Если от клиента можно ожидать восстановления после исключения, сделайте его проверенным исключением. Если клиент не может ничего сделать для восстановления из исключения, сделайте его непроверенным исключением
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Исключения в Java
- Связанные исключения в Java
- Ошибки V / S Исключения в Java
- Встроенные исключения в Java с примерами
- Использование throw, catch и instanceof для обработки исключений в Java
- Java.util.LinkedList.poll (), pollFirst (), pollLast () с примерами на Java
- Java lang.Long.reverse () метод в Java с примерами
- Java lang.Long.byteValue () метод в Java с примерами
- Java.util.Collections.disjoint () Метод в Java с примерами
- Java lang.Long.numberOfTrailingZeros () метод в Java с примерами
- Java.util.LinkedList.offer (), offerFirst (), offerLast () в Java
- Java.util.LinkedList.peek (), peekfirst (), peeklast () в Java
- Java lang.Long.lowestOneBit () метод в Java с примерами
- Java.util.concurrent.Phaser класс в Java с примерами
- Java lang.Long.highestOneBit () метод в Java с примерами
0.00 (0%) 0 votes