logo

Блок Java try-catch

Блок спроб Java

Java спробувати block використовується для включення коду, який може викликати виключення. Його необхідно використовувати в межах методу.

Якщо виняток виникає в певному операторі в блоці try, решта коду блоку не виконуватиметься. Тому рекомендується не зберігати код у блоці try, який не викличе виняткову ситуацію.

За блоком спроби Java має слідувати блок catch або finally.

Синтаксис Java try-catch

 try{ //code that may throw an exception }catch(Exception_class_Name ref){} 

Синтаксис блоку try-finally

 try{ //code that may throw an exception }finally{} 

Блок catch Java

Блок Java catch використовується для обробки винятку шляхом оголошення типу винятку в параметрі. Оголошений виняток має бути винятком батьківського класу (тобто Exception) або згенерованим типом винятку. Однак хорошим підходом є оголошення згенерованого типу винятку.

список java порожній

Блок catch слід використовувати лише після блоку try. Ви можете використовувати кілька блоків catch з одним блоком try.

Внутрішня робота блоку try-catch Java

Блок Java try-catch

JVM спочатку перевіряє, чи обробляється виняток чи ні. Якщо виняток не обробляється, JVM надає обробник винятків за замовчуванням, який виконує такі завдання:

  • Роздруковує опис винятку.
  • Друкує трасування стека (ієрархію методів, де сталася виняткова ситуація).
  • Викликає завершення програми.

Але якщо прикладний програміст обробляє виняток, зберігається нормальний потік програми, тобто виконується решта коду.

Обробка проблем без винятків

Давайте спробуємо зрозуміти проблему, якщо ми не використовуємо блок try-catch.

Приклад 1

TryCatchExample1.java

 public class TryCatchExample1 { public static void main(String[] args) { int data=50/0; //may throw exception System.out.println('rest of the code'); } } 
Перевірте зараз

Вихід:

 Exception in thread 'main' java.lang.ArithmeticException: / by zero 

Як показано в прикладі вище, решта коду не виконується (у такому випадку решта коду заява не друкується).

Після винятку може бути 100 рядків коду. Якщо виняток не оброблено, увесь код під винятком не буде виконано.

Рішення шляхом обробки винятків

Давайте подивимося на вирішення вищевказаної проблеми за допомогою блоку try-catch Java.

Приклад 2

TryCatchExample2.java

 public class TryCatchExample2 { public static void main(String[] args) { try { int data=50/0; //may throw exception } //handling the exception catch(ArithmeticException e) { System.out.println(e); } System.out.println('rest of the code'); } } 
Перевірте зараз

Вихід:

 java.lang.ArithmeticException: / by zero rest of the code 

Як показано в прикладі вище, решта коду виконується, тобто решта коду виписка друкується.

Приклад 3

У цьому прикладі ми також зберегли код у блоці try, який не викличе виняткову ситуацію.

TryCatchExample3.java

 public class TryCatchExample3 { public static void main(String[] args) { try { int data=50/0; //may throw exception // if exception occurs, the remaining statement will not exceute System.out.println('rest of the code'); } // handling the exception catch(ArithmeticException e) { System.out.println(e); } } } 
Перевірте зараз

Вихід:

 java.lang.ArithmeticException: / by zero 

Тут ми бачимо, що якщо в блоці try виникає виняток, решта коду блоку не виконуватиметься.

Приклад 4

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

TryCatchExample4.java

 public class TryCatchExample4 { public static void main(String[] args) { try { int data=50/0; //may throw exception } // handling the exception by using Exception class catch(Exception e) { System.out.println(e); } System.out.println('rest of the code'); } } 
Перевірте зараз

Вихід:

 java.lang.ArithmeticException: / by zero rest of the code 

Приклад 5

Давайте подивимося приклад друку спеціального повідомлення про виняток.

TryCatchExample5.java

індійська актриса рані мукерджі
 public class TryCatchExample5 { public static void main(String[] args) { try { int data=50/0; //may throw exception } // handling the exception catch(Exception e) { // displaying the custom message System.out.println('Can't divided by zero'); } } } 
Перевірте зараз

Вихід:

 Can't divided by zero 

Приклад 6

Давайте розглянемо приклад вирішення виняткової ситуації в блоці catch.

TryCatchExample6.java

 public class TryCatchExample6 { public static void main(String[] args) { int i=50; int j=0; int data; try { data=i/j; //may throw exception } // handling the exception catch(Exception e) { // resolving the exception in catch block System.out.println(i/(j+2)); } } } 
Перевірте зараз

Вихід:

 25 

Приклад 7

У цьому прикладі разом із блоком try ми також вкладаємо код винятку в блок catch.

java, як перетворити рядок на int

TryCatchExample7.java

 public class TryCatchExample7 { public static void main(String[] args) { try { int data1=50/0; //may throw exception } // handling the exception catch(Exception e) { // generating the exception in catch block int data2=50/0; //may throw exception } System.out.println('rest of the code'); } } 
Перевірте зараз

Вихід:

 Exception in thread 'main' java.lang.ArithmeticException: / by zero 

Тут ми бачимо, що блок catch не містив код винятку. Отже, вставте код винятку в блок try і використовуйте блок catch лише для обробки винятків.

Приклад 8

У цьому прикладі ми обробляємо згенерований виняток (Arithmetic Exception) за допомогою класу винятків іншого типу (ArrayIndexOutOfBoundsException).

TryCatchExample8.java

 public class TryCatchExample8 { public static void main(String[] args) { try { int data=50/0; //may throw exception } // try to handle the ArithmeticException using ArrayIndexOutOfBoundsException catch(ArrayIndexOutOfBoundsException e) { System.out.println(e); } System.out.println('rest of the code'); } } 
Перевірте зараз

Вихід:

 Exception in thread 'main' java.lang.ArithmeticException: / by zero 

Приклад 9

Давайте подивимося приклад обробки іншого неперевіреного винятку.

TryCatchExample9.java

 public class TryCatchExample9 { public static void main(String[] args) { try { int arr[]= {1,3,5,7}; System.out.println(arr[10]); //may throw exception } // handling the array exception catch(ArrayIndexOutOfBoundsException e) { System.out.println(e); } System.out.println('rest of the code'); } } 
Перевірте зараз

Вихід:

 java.lang.ArrayIndexOutOfBoundsException: 10 rest of the code 

Приклад 10

Давайте подивимося приклад обробки перевірених винятків.

TryCatchExample10.java

 import java.io.FileNotFoundException; import java.io.PrintWriter; public class TryCatchExample10 { public static void main(String[] args) { PrintWriter pw; try { pw = new PrintWriter('jtp.txt'); //may throw exception pw.println('saved'); } // providing the checked exception handler catch (FileNotFoundException e) { System.out.println(e); } System.out.println('File saved successfully'); } } 
Перевірте зараз

Вихід:

 File saved successfully