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