Обробка винятків Java (з прикладами)

У підручнику ми дізнаємось про різні підходи до обробки винятків у Java за допомогою прикладів.

В останньому уроці ми дізналися про винятки Java. Ми знаємо, що винятки аномально припиняють виконання програми.

Ось чому важливо обробляти винятки. Ось список різних підходів до обробки винятків у Java.

  • спробуй … catch block
  • нарешті блокувати
  • кидає і кидає ключове слово

1. Спробуйте Java … блок блокування

Блок 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 нарешті блокує

У 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 за допомогою блоку нарешті

 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-кидка

 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 кидки та кидки.

Цікаві статті...