Обработка исключений в Java
⚡ Умное резюме
Java Обработка исключений предоставляет структурированный механизм для управления ошибками времени выполнения, нарушающими нормальный ход выполнения программы. Она использует ключевые слова try, catch, finally, throw и throws для обнаружения, изоляции и восстановления после исключительных ситуаций, сохраняя при этомping Приложения надежны и предсказуемы.

Что является исключением в Java?
An Исключение в Java Это событие, которое прерывает выполнение инструкций программы и нарушает нормальный ход её выполнения. Это объект, который инкапсулирует информацию об ошибке, произошедшей внутри метода, и передаёт её в систему выполнения. JavaИсключения в основном используются для сигнализации о различных типах ошибок, чтобы разработчики могли реагировать на них контролируемым образом.
В литературе можно выделить две основные категории ошибок. Java:
- Ошибки времени компиляции
- Ошибки выполнения
Ошибки компиляции можно разделить на два дополнительных типа:
- Ошибки синтаксиса
- Семантические ошибки
Пример синтаксических ошибок:
Вместо объявления int a; вы по ошибке заявили это как in a;в связи с чем компилятор выдаст ошибку.
Пример семантических ошибок: Вы объявили переменную int a; и после нескольких строк кода вы снова объявляете целое число как int a;. Все эти ошибки подсвечиваются при компиляции кода.
Пример ошибок во время выполнения
Ошибка времени выполнения называется ИсключениеИсключения — это любые события, которые прерывают нормальный ход выполнения программы. Примеры исключений включают арифметическое исключение, NullPointerException, исключение деления на ноль и многие другие. Исключения в Java Это условия, которые часто находятся вне прямого контроля разработчика.
Нажмите здесь если видео недоступно
Зачем нам нужна обработка исключений?
Предположим, вы написали программу для доступа к серверу. Всё работает отлично, пока вы занимаетесь разработкой.ping код в локальной среде с контролируемыми условиями.
Во время реального запуска в производственной среде сервер может быть недоступен. Когда ваша программа попытается получить к нему доступ, будет сгенерировано исключение, и без надлежащей обработки программа внезапно завершится.
Как обработать исключение в Java
До сих пор мы видели, что исключения часто находятся вне контроля разработчика. Однако сваливать вину за сбой кода на проблемы окружающей среды — не настоящее решение. Необходимо надежное программирование, которое учитывает исключительные ситуации. Такой код известен как Обработчик исключений.
В нашем примере хорошая обработка исключений означала бы, что при выходе из строя основного сервера программа автоматически подключается к резервному серверу.
Для реализации этого можно написать код для подключения к серверу, используя традиционные условия if и else. Вы будете проверять, недоступен ли сервер, и если да, то напишете код для подключения к резервному серверу. Такая организация кода с использованием ветвей «if» и «else» неэффективна, когда ваш код содержит несколько ветвей. Java Исключения обрабатывать.
class connect{ if(Server Up){ // code to connect to server } else{ // code to connect to BACKUP server } }
Попробуйте блокировку Try Catch в Java
Java Предоставляет встроенный механизм обработки исключений, который разделяет обычную логику и логику восстановления после ошибок.
- Обычный код переходит в TRY блок.
- Код обработки исключений попадает в CATCH блок.
В нашем примере блок TRY будет содержать код для подключения к серверу. Блок CATCH будет содержать код для подключения к резервному серверу. Если сервер работает, код в блоке CATCH будет проигнорирован. Если сервер не работает, будет сгенерировано исключение, и код в блоке CATCH будет выполнен.
Итак, вот как обрабатывается исключение в Java.
Синтаксис использования конструкции try и catch.
try{ statement(s) } catch (exceptiontype name){ statement(s) }
Пример блока try-catch
Шаг 1) Скопируйте следующий код в редактор.
class JavaException { public static void main(String args[]){ int d = 0; int n = 20; int fraction = n/d; System.out.println("End Of Main"); } }
Шаг 2) Сохраните файл и скомпилируйте код. Запустите программу с помощью команды `java`. JavaИсключение.
Шаг 3) В строке 5 отображается арифметическая ошибка, связанная с делением на ноль, а строка 6 никогда не выполняется.
Шаг 4) Теперь давайте рассмотрим, как конструкции try и catch помогут нам обработать это исключение. Мы поместим строку кода, вызвавшую исключение, в блок кода. стараться блок, за которым следует поймать блокировать. Скопируйте следующий код в редактор.
class JavaException { public static void main(String args[]) { int d = 0; int n = 20; try { int fraction = n / d; System.out.println("This line will not be Executed"); } catch (ArithmeticException e) { System.out.println("In the catch Block due to Exception = " + e); } System.out.println("End Of Main"); } }
Шаг 5) Сохраните, скомпилируйте и запустите код. Вы получите следующий результат.
Как видите, исключение обрабатывается, и последняя строка кода также выполняется. Кроме того, обратите внимание, что строка 7 не будет выполнена, потому что как только возникает исключение, поток управления переходит к блоку catch.
Примечание: Объект ArithmeticException «e» содержит информацию о возникшем исключении, что может быть полезно при выполнении восстановительных действий.
Java Иерархия классов исключений
После выполнения одного блока catch остальные пропускаются, и выполнение продолжается после блоков try и catch. Вложенные блоки catch должны следовать иерархии исключений от наиболее специфичного подкласса к наиболее общему родительскому классу.
- Все классы исключений в Java Класс Throwable расширяет класс Throwable. У класса Throwable есть два подкласса: Error и Exception.
- Класс Error определяет исключения или проблемы, которые не ожидаются при нормальных обстоятельствах в вашей программе, например, ошибка памяти, аппаратная ошибка или ошибка JVM.
- Класс Exception представляет собой исключения, которые может обрабатывать ваша программа, и ваша программа может восстанавливаться после этих исключений, используя блоки try и catch.
- RuntimeException — это подкласс класса Exception. Исключения этого типа представляют собой неконтролируемые исключения, возникающие во время выполнения и не обнаруживаемые на этапе компиляции. Хорошими примерами являются исключение деления на ноль и исключение нулевого указателя.
- Исключение IOException возникает во время операций ввода и вывода.
- Прерванное исключение в Java Эта ошибка возникает во время многопоточных операций при прерывании потока.
Пример: Вложенность блоков try и catch.
Шаг 1) Скопируйте следующий код в редактор.
class JavaException { public static void main(String args[]) { try { int d = 1; int n = 20; int fraction = n / d; int g[] = { 1 }; g[20] = 100; } /*catch(Exception e){ System.out.println("In the catch block due to Exception = "+e); }*/ catch (ArithmeticException e) { System.out.println("In the catch block due to Exception = " + e); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("In the catch block due to Exception = " + e); } System.out.println("End Of Main"); } }
Шаг 2) Сохраните файл и скомпилируйте код. Запустите программу с помощью команды. Ява JavaИсключение.
Шаг 3) Возникает исключение ArrayIndexOutOfBoundsException. Измените значение int d на 0. Сохраните, скомпилируйте и запустите код.
Шаг 4) Необходимо сгенерировать исключение ArithmeticException.
Шаг 5) Раскомментируйте строки с 10 по 12. Сохраните, скомпилируйте и запустите код.
Шаг 6) Ошибка компиляции? Это происходит потому, что Exception является базовым классом для ArithmeticException. Любое исключение, возникающее в ArithmeticException, также может быть обработано классом Exception. Поэтому блок catch класса ArithmeticException никогда не получит возможности выполниться, что делает его избыточным. Отсюда и ошибка компиляции.
Java Наконец заблокируйте
Последний блок выполняется независимо от возникновения исключения в блоке try. Это необязательный Используется с блоком try. Блок finally — это подходящее место для освобождения ресурсов, таких как подключения к базе данных, файлы или сетевые сокеты.
try { statement(s) } catch (ExceptiontType name) { statement(s) } finally { statement(s) }
Если в блоке try возникает исключение, после завершения блока catch выполняется блок finally.
Пример блока finally
Шаг 1) Скопируйте следующий код в редактор.
class JavaException { public static void main(String args[]){ try{ int d = 0; int n =20; int fraction = n/d; } catch(ArithmeticException e){ System.out.println("In the catch block due to Exception = "+e); } finally{ System.out.println("Inside the finally block"); } } }
Шаг 2) Сохраните, скомпилируйте и запустите код.
Шаг 3) Ожидаемый результат: Блок finally выполняется, несмотря на возникновение исключения.
Шаг 4) Измените значение переменной d на 1. Сохраните, скомпилируйте и запустите код, затем посмотрите на результат.
Передовые методы для Java Обработка исключений
Следуя нескольким проверенным правилам, вы сможете сохранить свои Java Код отказоустойчивый, читаемый и легко отлаживаемый:
- Для сохранения целостности иерархии исключений сначала перехватывайте наиболее специфические исключения, а затем более общие.
- Избегайте пустых блоков catch. Как минимум, регистрируйте исключение в журнале, чтобы никогда не упустить первопричину.
- Используйте блок finally или try with resources для освобождения файлов, сокетов и подключений к базе данных.
- Проверяемые исключения следует генерировать только в том случае, если вызывающая сторона может разумно восстановить работу системы, а непроверяемые исключения использовать для ошибок программирования.
- Оберните низкоуровневые исключения в осмысленные бизнес-исключения, чтобы сохранить совместимость API.tracВсё чисто.
- В многопоточном коде никогда не следует молча подавлять исключение InterruptedException, вместо этого необходимо восстановить флаг прерывания.







