Обработка исключений Java (с примерами)

В этом руководстве мы узнаем о различных подходах к обработке исключений в Java с помощью примеров.

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

Вот почему так важно обрабатывать исключения. Вот список различных подходов к обработке исключений в Java.

  • попробуйте… поймать блок
  • наконец заблокировать
  • throw и throws ключевое слово

1. Java try… catch блок

Блок try-catch используется для обработки исключений в Java. Вот синтаксис try… catchблока:

 try ( // code ) catch(Exception e) ( // code )

Здесь мы поместили код, который может генерировать исключение внутри tryблока. За каждым tryблоком следует catchблок.

Когда возникает исключение, оно перехватывается catchблоком. catchБлок не может быть использован без tryблока.

Пример: обработка исключений с помощью try… catch

 class Main ( public static void main(String() args) ( try ( // code that generate exception int divideByZero = 5 / 0; System.out.println("Rest of code in try block"); ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) ) )

Вывод

 ArithmeticException => / нулем

В этом примере мы пытаемся разделить число на 0. Здесь этот код генерирует исключение.

Чтобы обработать исключение, мы поместили код 5 / 0внутри tryблока. Теперь при возникновении исключения остальная часть кода внутри tryблока пропускается.

catchБлок ловит исключение и утверждение внутри блока улова выполняются.

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

2. Блок Java finally

В Java finallyблок всегда выполняется независимо от того, есть исключение или нет.

finallyБлок не является обязательным. И для каждого tryблока может быть только один finallyблок.

Базовый синтаксис finallyблока:

 try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )

Если возникает исключение, finallyблок выполняется после try… catchблока. В противном случае он выполняется после блока try. Для каждого tryблока может быть только один finallyблок.

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

 class Main ( public static void main(String() args) ( try ( // code that generates exception int divideByZero = 5 / 0; ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) finally ( System.out.println("This is the finally block"); ) ) )

Вывод

 ArithmeticException => / по нулю Это последний блок

В приведенном выше примере мы делим число на 0 внутри tryблока. Здесь этот код генерирует файл ArithmeticException.

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

Примечание . Использование finallyблока является хорошей практикой . Это потому, что он может включать важные коды очистки, такие как,

  • код, который может быть случайно пропущен при возврате, продолжении или прерывании
  • закрытие файла или соединения

3. Java throw and throws ключевое слово

throwКлючевое слово Java используется для явного создания единственного исключения.

Когда мы делаем throwисключение, поток программы перемещается от tryблока к catchблоку.

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

 class Main ( public static void divideByZero() ( // throw an exception throw new ArithmeticException("Trying to divide by 0"); ) public static void main(String() args) ( divideByZero(); ) )

Вывод

 Исключение в потоке «main» java.lang.ArithmeticException: попытка разделить на 0 в Main.divideByZero (Main.java:5) в Main.main (Main.java:9)

В приведенном выше примере мы явно выбрасываем ключевое слово ArithmeticExceptionusing throw.

Точно так же throwsключевое слово используется для объявления типа исключений, которые могут возникнуть внутри метода. Он используется в объявлении метода.

Пример: Java выбрасывает ключевое слово

 import java.io.*; class Main ( // declareing the type of exception public static void findFile() throws IOException ( // code that may generate IOException File newFile = new File("test.txt"); FileInputStream stream = new FileInputStream(newFile); ) public static void main(String() args) ( try ( findFile(); ) catch (IOException e) ( System.out.println(e); ) ) )

Вывод

 java.io.FileNotFoundException: test.txt (система не может найти указанный файл)

Когда мы запускаем эту программу, если файл test.txt не существует, FileInputStreamвыдает a, FileNotFoundExceptionрасширяющий IOExceptionкласс.

findFile()Метод определяет , что IOExceptionможет быть выброшен. main()Метод вызывает этот метод и обрабатывает исключение , если она брошена.

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

Чтобы узнать больше, посетите Java throw and throws.

Интересные статьи...