У цьому підручнику ми дізнаємося про вираз try catch у Java за допомогою прикладів.
try… catchБлок в Java використовується для виключення рукояток і запобігає аварійне завершення роботи програми.
Ось синтаксис try… catchблоку в Java.
try( // code ) catch(exception) ( // code )
tryБлок включає в себе код , який може генерувати виняток.
catchБлок включає в себе код , який виконується , коли відбувається виняток всередині tryблоку.
Приклад: Java try… catch block
class Main ( public static void main(String() args) ( try ( int divideByZero = 5 / 0; System.out.println("Rest of code in try block"); ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) ) )
Вихідні дані
ArithmeticException => / за нулем
У наведеному вище прикладі зверніть увагу на рядок,
int divideByZero = 5 / 0;
Тут ми намагаємось розділити число на нуль . У цьому випадку відбувається виняток. Отже, ми вклали цей код всередину tryблоку.
Коли програма зустрічає цей код, ArithmeticExceptionвідбувається. І, виняток ловиться catchблоком і виконує код всередині catchблоку.
catchБлок виконується тільки тоді , коли існує виняток всередині tryблоку.
Примітка : У Java ми можемо використовувати tryблок без catchблоку. Однак ми не можемо використовувати catchблок без tryблоку.
Спробуйте Java … нарешті заблокуйте
Ми також можемо використовувати tryблок разом із блоком нарешті.
У цьому випадку блок нарешті завжди виконується незалежно від того, є всередині блоку спроби виняток чи ні.
Приклад: Java спробувати … нарешті заблокувати
class Main ( public static void main(String() args) ( try ( int divideByZero = 5 / 0; ) finally ( System.out.println("Finally block is always executed"); ) ) )
Вихідні дані
Нарешті, блок завжди виконується. Виняток у потоці "main" java.lang.ArithmeticException: / за нулем у Main.main (Main.java:4)
У наведеному вище прикладі ми використовували tryблок разом із finallyблоком. Ми бачимо, що код всередині tryблоку викликає виняток.
Однак код всередині finallyблоку виконується незалежно від винятку.
Спробуйте Java … зловити … нарешті заблокувати
У Java ми також можемо використовувати блок нарешті після try… catchблоку. Наприклад,
import java.io.*; class ListOfNumbers ( // create an integer array private int() list = (5, 6, 8, 9, 2); // method to write data from array to a fila public void writeList() ( PrintWriter out = null; try ( System.out.println("Entering try statement"); // creating a new file OutputFile.txt out = new PrintWriter(new FileWriter("OutputFile.txt")); // writing values from list array to Output.txt for (int i = 0; i <7; i++) ( out.println("Value at: " + i + " = " + list(i)); ) ) catch (Exception e) ( System.out.println("Exception => " + e.getMessage()); ) finally ( // checking if PrintWriter has been opened if (out != null) ( System.out.println("Closing PrintWriter"); // close PrintWriter out.close(); ) else ( System.out.println("PrintWriter not open"); ) ) ) ) class Main ( public static void main(String() args) ( ListOfNumbers list = new ListOfNumbers(); list.writeList(); ) )
Вихідні дані
Введення оператора try Exception => Індекс 5 поза межами довжини 5 Закриття PrintWriter
У наведеному вище прикладі ми створили масив із назвою list та файл із іменем output.txt. Тут ми намагаємося прочитати дані з масиву та зберегти їх у файл.
Зверніть увагу на код,
for (int i = 0; i < 7; i++) ( out.println("Value at: " + i + " = " + list(i)); )
Тут розмір масиву дорівнює, 5а останній елемент масиву дорівнює list(4). Однак ми намагаємось отримати доступ до елементів на a(5) і a(6).
Отже, код генерує виняток, який перехоплюється блоком catch.
Оскільки finallyблок завжди виконується, ми включили код, щоб закрити PrintWriterвсередині блоку нарешті.
Хорошою практикою є використання нарешті блоку для включення важливого коду очищення, наприклад, закриття файлу чи підключення.
Примітка : Є деякі випадки, коли finallyблок не виконується:
- Використання
System.exit()методу - У
finallyблоці виникає виняток - Смерть нитки
Кілька блоків лову
Для кожного tryблоку може бути нуль або більше catchблоків. Кілька catchблоків дозволяють нам по-різному обробляти кожен виняток.
Тип аргументу кожного catchблоку вказує на тип виключення, який може ним оброблятися. Наприклад,
class ListOfNumbers ( public int() arr = new int(10); public void writeList() ( try ( arr(10) = 11; ) catch (NumberFormatException e1) ( System.out.println("NumberFormatException => " + e1.getMessage()); ) catch (IndexOutOfBoundsException e2) ( System.out.println("IndexOutOfBoundsException => " + e2.getMessage()); ) ) ) class Main ( public static void main(String() args) ( ListOfNumbers list = new ListOfNumbers(); list.writeList(); ) )
Вихідні дані
IndexOutOfBoundsException => Індекс 10 поза межами довжини 10
У цьому прикладі ми створили цілочисельний масив із іменем arrрозміром 10 .
Оскільки індекс масиву починається з 0 , останнім елементом масиву є arr(9). Зверніть увагу на заяву,
arr(10) = 11;
Тут ми намагаємося присвоїти значення індексу 10 . Отже, IndexOutOfBoundExceptionвідбувається.
Коли в tryблоці виникає виняток ,
- Виняток викидається в перший
catchблок. Першийcatchблок не обробляє anIndexOutOfBoundsException, тому він передається наступномуcatchблоку. - Другий
catchблок у наведеному вище прикладі є відповідним обробником винятків, оскільки він обробляє файлIndexOutOfBoundsException. Отже, воно виконується.
Виловлювання кількох винятків
З Java SE 7 і пізніших версій тепер ми можемо перехопити більше одного типу винятків за допомогою одного catchблоку.
Це зменшує дублювання коду та підвищує простоту та ефективність коду.
Кожен тип винятків, з яким може працювати catchблок, відокремлюється за допомогою вертикальної смуги |.
Його синтаксис:
try ( // code ) catch (ExceptionType1 | Exceptiontype2 ex) ( // catch block )
Щоб дізнатись більше, відвідайте Java, що охоплює кілька винятків.
Інструкція про спробу ресурсів Java
Інструкція try-with-resources - це інструкція try, яка має одне або кілька оголошень ресурсів.
Його синтаксис:
try (resource declaration) ( // use of the resource ) catch (ExceptionType e1) ( // catch block )
Ресурс - це об’єкт, який слід закрити в кінці програми. Він повинен бути оголошений та ініціалізований у операторі try.
Візьмемо приклад.
try (PrintWriter out = new PrintWriter(new FileWriter("OutputFile.txt")) ( // use of the resource )
Оператор try-with-resources також називається автоматичним управлінням ресурсами . Це твердження автоматично закриває всі ресурси в кінці виписки.
Щоб дізнатись більше, відвідайте інструкцію java try-with-resources.








