Проверка исключений — одна из самых важных вещей в программировании и тестировании программного обеспечения. Checked And Unchecked Exception останавливает запуск программы, когда она пытается отловить ошибку или ошибку.
Более того, считается, что ответственность за то, чтобы эти ошибки никогда не происходили, лежит на программисте. И проверенные, и непроверенные исключения исключительно похожи, но все же они разные.
Основные выводы
- Компилятор проверяет проверенные исключения во время компиляции и должен обрабатываться программистом с помощью блока try-catch или ключевого слова throws, тогда как непроверенные исключения возникают во время выполнения и не требуют обработки.
- Проверенные исключения используются для исправимых ошибок, таких как файл не найден, а непроверенные исключения используются для неисправимых ошибок, таких как нехватка памяти или исключения с нулевым указателем.
- Проверенные исключения являются частью сигнатуры метода, а непроверенные исключения — нет.
Проверенное и непроверенное исключение
Разница между проверенными и непроверенными исключениями заключается в том, что проверенные исключения — это те, которые должны перехватываться и обрабатываться оператором checks(), иначе они заставят программу завершить работу и распечатать трассировку стека, тогда как непроверенные исключения, с другой стороны, должны вообще не нужно перехватывать или обрабатывать, поскольку ответственность за то, чтобы эти ошибки никогда не происходили, лежит на программисте.
Исключение Checked — это особый тип исключения, которое останавливает выполнение программы до тех пор, пока оно не будет перехвачено блоком catch или не указано в предложении throws метода, кроме того, исключение Checked перехватывается и обрабатывается оператором checks(), или они заставят программу завершить работу и распечатать трассировку стека.
Если код, вызвавший исключение, не был протестирован должным образом, это может привести к странным исключительным ошибкам Unchecked, которые может быть трудно найти и исправить.
Более того, непроверенные исключения вообще не должны перехватываться или обрабатываться, поскольку ответственность за то, чтобы эти ошибки никогда не возникали, лежит на программисте.
Сравнительная таблица
Параметры сравнения | Проверено исключение | Непроверенное исключение |
---|---|---|
Определение | Проверенные исключения — это те, которые должны быть перехвачены и обработаны операторами checks(). | Неотмеченные исключения вообще не нужно перехватывать или обрабатывать. |
Вхождение | Блок catch должен обрабатывать проверенные исключения во время компиляции. | Неперехваченные исключения, также известные как исключения времени выполнения, являются непроверенными исключениями. |
Обработка ошибок | Отмеченное исключение останавливает выполнение программы до тех пор, пока она не попытается отловить ошибку или ошибку. | Ответственность за то, чтобы таких ошибок никогда не возникало, лежит на программисте. |
Классы исключений | У него есть исключительные классы. | У него нет исключительных классов, или он не является основной частью исключительных классов. |
Пример | OutOfMemoryError, NullPointerException и StackOverflowError. | Индексаутофбаундсексцептион |
Что такое проверенное исключение?
Проверенные исключения тесно связаны с тестированием программного обеспечения, более того, проверенное исключение — это исключение, которое необходимо обработать, иначе программа завершится.
Это означает, что код, следующий за оператором throw, не будет выполняться, если ни один блок catch не обрабатывает исключение.
Отмеченные исключения служат двум целям: они останавливают работу программы при возникновении ошибки и предоставляют отладочную информацию о том, где найти эту ошибку.
Компилятор не заставляет программиста обрабатывать исключение, но любой класс, расширяющий другой класс, также должен либо расширять, либо реализовывать все проверенные исключения.
Если этого не происходит, компиляция расширяющего класса завершается неудачей с ошибкой времени компиляции, указывающей, что он должен обрабатывать все свои исключения, проверенные суперклассом. Это предотвращает использование наследования для обхода встроенных режимов сбоя.
Когда генерируется исключение, оно передается отладчику в Eclipse или в операционную систему, которая затем нормально завершает программу. Операционная система распечатывает трассировку стека.
Трассировка стека предоставляет информацию для каждого вызова метода в том порядке, в котором они были вызваны. Это позволяет программисту найти, где в коде или где в потоке выполнения кода произошло исключение.
Что такое непроверенное исключение?
Непроверяемые исключения позволяют программистам программировать более гибко и эффективно. Java был разработан, чтобы позволить программистам создавать приложения, которые эффективно используют ресурсы и избегают возникновения взаимоблокировок.
Непроверенные исключения могут быть устранены тщательным проектированием и практикой кодирования. Однако все исключения, кроме NullPointerException в коде Java, считаются непроверенными.
Непроверенные исключения вообще не нужно перехватывать или обрабатывать.
Более того, они позволяют коду более высокого уровня сообщить коду более низкого уровня, что он собирается сделать что-то, что не является потокобезопасным, но не вызовет проблем, если в любой момент времени работает только один поток, например обновление некоторых данных или отображение некоторой графики на экране.
Использование непроверенных исключений — рискованное предложение. Если класс собирается генерировать непроверенное исключение, то тот, кто использует этот класс, должен знать об этом и иметь некоторые строгие методы для работы с ним.
Например, программист может захотеть прочитать какие-то данные из файла, а затем снова записать их, и для такого рода функций не требуется никакой синхронизации.
Для приложения вполне допустимо дважды считывать одни и те же данные в двух разных потоках без каких-либо негативных последствий для производительности или стабильности системы.
Основные различия между проверенными и непроверенными исключениями
- Проверенные исключения — это те, которые должны быть перехвачены и обработаны операторами checks (), тогда как непроверенные исключения вообще не должны перехватываться или обрабатываться.
- Checked Exceptions должны обрабатываться блоком catch во время компиляции, тогда как Uncaught Exceptions, также известные как исключения во время выполнения, являются Unchecked Exceptions.
- Проверенное исключение останавливает выполнение программы до тех пор, пока она не попытается поймать ошибку или ошибку, тогда как за непроверенные исключения отвечает программист, чтобы гарантировать, что эти ошибки никогда не возникнут.
- Checked Exception имеет исключительные классы, тогда как Unchecked Exceptions не имеют каких-либо исключительных классов или не являются основной частью исключительных классов.
- Примером проверенного исключения может быть OutOfMemoryError, NullPointerException и StackOverflowError, тогда как примером непроверенного исключения может быть IndexOutOfBoundsException.