Попробуйте Catch в Java: пример обработки исключений

Содержание:

Anonim

Что такое исключение в Java?

Исключение в Java - это событие, которое прерывает выполнение программных инструкций и нарушает нормальный поток выполнения программы. Это объект, который заключает в себе информацию об ошибке, произошедшей в методе, и передается в систему времени выполнения. В Java исключения в основном используются для обозначения различных типов ошибок.

В этом руководстве вы узнаете:

  • Что такое исключение?
  • Зачем нам нужно Exception?
  • Как обрабатывать исключение
  • Попробуйте поймать блок
  • Иерархия классов исключений Java
  • Окончательный блок Java

Есть два типа ошибок:

  1. Ошибки времени компиляции
  2. Ошибки времени выполнения

Ошибки времени компиляции снова можно разделить на два типа:

  • Ошибки синтаксиса
  • Семантические ошибки

Пример синтаксических ошибок:

Вместо объявления

int a;вы ошибочно указали, in a;какой компилятор выдаст ошибку.

Пример: вы объявили переменную

int a;и после нескольких строк кода вы снова объявляете целое число как int a;. Все эти ошибки выделяются при компиляции кода.

Пример ошибок во время выполнения

Ошибка времени выполнения называется ошибкой исключений . Это любое событие, которое прерывает нормальный поток выполнения программы.

Примеры исключений: арифметическое исключение, исключение Nullpointer, исключение Divide by zero и т. Д.

Исключения в Java - это то, что находится вне контроля разработчиков.

Нажмите здесь, если видео недоступно

Зачем нам нужно Exception?

Предположим, вы написали программу для доступа к серверу. Пока вы разрабатывали код, все работало нормально.

Во время фактического производственного цикла сервер не работает. Когда ваша программа пытается получить к нему доступ, возникает исключение.

Как обрабатывать исключение

Пока что мы видели, исключение находится вне контроля разработчика. Но винить сбой кода в экологических проблемах - не выход. Вам нужно надежное программирование, которое позаботится о исключительных ситуациях. Такой код известен как обработчик исключений.

В нашем примере хорошей обработкой исключений было бы подключение к резервному серверу, когда сервер не работает.

Чтобы реализовать это, введите свой код для подключения к серверу (используя традиционные условия if и else).

Вы проверите, не работает ли сервер. Если да, напишите код для подключения к серверу резервного копирования.

Такая организация кода с использованием цикла «if» и «else» неэффективна, если в вашем коде есть несколько исключений Java для обработки.

class connect{if(Server Up){// code to connect to server}else{// code to connect to BACKUP server}}

Попробуйте поймать блок

Java обеспечивает исключительную встроенную обработку.

  1. Обычный код помещается в блок TRY .
  2. Код обработки исключений помещается в блок CATCH.

В нашем примере блок TRY будет содержать код для подключения к серверу. Блок CATCH будет содержать код для подключения к резервному серверу.

Если сервер работает, код в блоке CATCH будет проигнорирован. Если сервер не работает, возникает исключение и выполняется код в блоке catch.

Итак, вот как обрабатывается исключение в Java.

Синтаксис для использования try & catch

try{statement(s)}catch (exceptiontype name){statement(s)}

Пример

Шаг 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 JavaException

Шаг 3) Арифметическое исключение - деление на ноль показано ниже для строки №5, а строка №6 никогда не выполняется.

Шаг 4) Теперь давайте посмотрим, как try and catch поможет нам справиться с этим исключением. Мы поместим исключение, вызывающее строку кода, в блок 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.

Примечание. Объект AritmeticException «e» содержит информацию о произошедшем исключении, которая может быть полезна при выполнении действий по восстановлению.

Иерархия классов исключений Java

После выполнения одного оператора catch остальные игнорируются, и выполнение продолжается после блока try / catch. Вложенные блоки catch следуют иерархии исключений.
  • Все классы исключений в Java расширяют класс Throwable. Throwable имеет два подкласса: Error и Exception.
  • Класс Error определяет исключение или проблемы, которые не ожидаются в нашей программе при нормальных обстоятельствах, например, ошибка памяти, ошибка оборудования, ошибка JVM и т. Д.
  • Класс Exception представляет исключения, которые могут обрабатываться нашей программой, и наша программа может быть восстановлена ​​из этого исключения с помощью блока try и catch.
  • Исключение среды выполнения - это подкласс класса исключения. Исключение этого типа представляет собой исключение, которое возникает во время выполнения и которое не может быть отслежено во время компиляции. Отличным примером того же является разделение на нулевое исключение или исключение нулевого указателя и т. Д.
  • Исключение ввода-вывода генерируется во время операций ввода и вывода
  • Прерванные исключения в 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 JavaException .

Шаг 3) Создается исключение ArrayIndexOutOfBoundsException. Измените значение int d на 0. Сохраните, скомпилируйте и запустите код.

Шаг 4 ) Должно быть создано исключение ArithmeticException.

Шаг 5) Раскомментируйте строку №10 до строки №12. Сохраните, скомпилируйте и запустите код.

Шаг 6) Ошибка компиляции? Это потому, что Exception является базовым классом ArithmeticException Exception. Любое исключение, которое вызывается ArithmeticException, также может обрабатываться классом Exception. Таким образом, блок catch ArithmeticException никогда не получит возможности выполнить, что делает его избыточным. Отсюда ошибка компиляции.

Окончательный блок Java

Блок finally выполняется независимо от того, возникло ли исключение в блоке try. Это необязательно использовать с Ьгой блоком.

 try {statement(s)} catch (ExceptiontType name) {statement(s)} finally {statement(s)}

В случае возникновения исключения в блоке try, блок finally выполняется после выполнения блока catch.

Пример

Шаг 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) Ожидаемый результат. Наконец, блок выполняется даже при возникновении исключения.

Шаг 4) Измените значение переменной d = 1. Сохраните, скомпилируйте и запустите код и посмотрите на результат.

Резюме :

  • Исключением является ошибка времени выполнения , которое прерывает нормальный поток программы execution.Disruption во время выполнения программы, называется , как ошибки или исключения.
  • Ошибки делятся на две категории.
    • Ошибки времени компиляции - синтаксические ошибки, семантические ошибки
    • Ошибки выполнения - Исключение
  • Надежная программа должна обрабатывать все исключения и по- прежнему с нормальным потоком выполнения программы. Java предоставляет встроенный исключительный метод обработки
  • Обработчик исключений - это набор кода, который обрабатывает исключение . Исключения можно обрабатывать в Java с помощью команды try & catch.
  • Пробный блок : в этом блоке идет нормальный код.
  • Блок перехвата : если в нормальном коде есть ошибка, он перейдет в этот блок.