Блок спроб 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
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