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
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