logo

Blok try-catch w Javie

Blok próbny Java

Jawa próbować block służy do umieszczenia kodu, który może zgłosić wyjątek. Należy go użyć w ramach metody.

Jeśli w konkretnej instrukcji w bloku try wystąpi wyjątek, reszta kodu blokowego nie zostanie wykonana. Dlatego zaleca się, aby nie przechowywać kodu w bloku try, który nie spowoduje zgłoszenia wyjątku.

Po bloku Java try musi nastąpić catch lub last block.

Składnia try-catch w Javie

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

Składnia bloku try-finally

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

Blok przechwytujący Java

Blok catch Java służy do obsługi wyjątku poprzez deklarację typu wyjątku w parametrze. Zadeklarowany wyjątek musi być wyjątkiem klasy nadrzędnej (tj. wyjątkiem) lub wygenerowanym typem wyjątku. Jednak dobrym podejściem jest zadeklarowanie wygenerowanego typu wyjątku.

jak zamienić string na int

Bloku catch należy używać wyłącznie po bloku try. Możesz użyć wielu bloków catch w jednym bloku try.

Wewnętrzne działanie bloku try-catch w Javie

Blok try-catch w Javie

JVM najpierw sprawdza, czy wyjątek jest obsługiwany, czy nie. Jeśli wyjątek nie zostanie obsłużony, JVM udostępnia domyślną procedurę obsługi wyjątków, która wykonuje następujące zadania:

  • Drukuje opis wyjątku.
  • Drukuje ślad stosu (Hierarchia metod, w których wystąpił wyjątek).
  • Powoduje zakończenie działania programu.

Jeśli jednak programista aplikacji obsłuży wyjątek, normalny przepływ aplikacji zostanie zachowany, tj. wykonywana będzie reszta kodu.

Problem bez obsługi wyjątków

Spróbujmy zrozumieć problem, jeśli nie zastosujemy bloku try-catch.

Przykład 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'); } } 
Przetestuj teraz

Wyjście:

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

Jak pokazano w powyższym przykładzie, reszta kodu nie jest wykonywany (w takim przypadku reszta kodu wyciąg nie jest drukowany).

Po wyjątku może znajdować się 100 linii kodu. Jeśli wyjątek nie zostanie obsłużony, cały kod poniżej wyjątku nie zostanie wykonany.

Rozwiązanie poprzez obsługę wyjątków

Zobaczmy rozwiązanie powyższego problemu za pomocą bloku try-catch w Javie.

Przykład 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'); } } 
Przetestuj teraz

Wyjście:

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

Jak pokazano w powyższym przykładzie, reszta kodu jest wykonywany, tj reszta kodu oświadczenie jest drukowane.

Przykład 3

W tym przykładzie zachowaliśmy również kod w bloku try, który nie spowoduje zgłoszenia wyjątku.

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); } } } 
Przetestuj teraz

Wyjście:

 java.lang.ArithmeticException: / by zero 

Tutaj widzimy, że jeśli w bloku try wystąpi wyjątek, reszta kodu blokowego nie zostanie wykonana.

Przykład 4

Tutaj obsługujemy wyjątek, używając wyjątku klasy nadrzędnej.

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'); } } 
Przetestuj teraz

Wyjście:

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

Przykład 5

Zobaczmy przykład drukowania niestandardowego komunikatu w przypadku wyjątku.

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'); } } } 
Przetestuj teraz

Wyjście:

 Can't divided by zero 

Przykład 6

Zobaczmy przykład rozwiązania wyjątku w bloku catch.

przykłady kodu w języku c#

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)); } } } 
Przetestuj teraz

Wyjście:

 25 

Przykład 7

W tym przykładzie oprócz bloku try umieszczamy także kod wyjątku w bloku catch.

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'); } } 
Przetestuj teraz

Wyjście:

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

Tutaj widzimy, że blok catch nie zawierał kodu wyjątku. Zatem umieść kod wyjątku w bloku try i użyj bloku catch tylko do obsługi wyjątków.

Przykład 8

W tym przykładzie obsługujemy wygenerowany wyjątek (wyjątek arytmetyczny) za pomocą klasy wyjątku innego typu (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'); } } 
Przetestuj teraz

Wyjście:

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

Przykład 9

Zobaczmy przykład obsługi innego niesprawdzonego wyjątku.

TryCatchExample9.java

dostępne
 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'); } } 
Przetestuj teraz

Wyjście:

 java.lang.ArrayIndexOutOfBoundsException: 10 rest of the code 

Przykład 10

Zobaczmy przykład obsługi sprawdzonego wyjątku.

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'); } } 
Przetestuj teraz

Wyjście:

 File saved successfully