У підручнику ми дізнаємось про різні підходи до обробки винятків у 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 кидки та кидки.








