logo

Blocul try-catch Java

Blocul de încercare Java

Java încerca bloc este folosit pentru a include codul care ar putea arunca o excepție. Trebuie utilizat în cadrul metodei.

Dacă apare o excepție la o anumită instrucțiune din blocul try, restul codului blocului nu se va executa. Așadar, se recomandă să nu păstrați codul în blocul try care nu va arunca o excepție.

Blocul de încercare Java trebuie să fie urmat fie de catch, fie de finally block.

Sintaxa lui Java try-catch

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

Sintaxa blocului try-finally

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

Blocul de captură Java

Blocul Java catch este utilizat pentru a gestiona excepția prin declararea tipului de excepție în parametru. Excepția declarată trebuie să fie excepția clasei părinte (adică, Excepție) sau tipul de excepție generat. Totuși, abordarea bună este declararea tipului de excepție generat.

ouă de Paște în Android

Blocul catch trebuie folosit numai după blocul de încercare. Puteți utiliza mai multe blocuri catch cu un singur bloc de încercare.

Funcționarea internă a blocului try-catch Java

Blocul try-catch Java

JVM-ul verifică în primul rând dacă excepția este gestionată sau nu. Dacă excepția nu este gestionată, JVM furnizează un handler implicit de excepție care efectuează următoarele sarcini:

  • Imprimă descrierea excepției.
  • Tipărește urmărirea stivei (Ierarhia metodelor în care a apărut excepția).
  • Determină terminarea programului.

Dar dacă programatorul aplicației gestionează excepția, fluxul normal al aplicației este menținut, adică restul codului este executat.

Gestionarea problemei fără excepție

Să încercăm să înțelegem problema dacă nu folosim un bloc try-catch.

Exemplul 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'); } } 
Testează-l acum

Ieșire:

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

După cum este afișat în exemplul de mai sus, restul codului nu este executat (în acest caz, restul codului declarația nu este tipărită).

Pot exista 100 de linii de cod după excepție. Dacă excepția nu este gestionată, tot codul de sub excepție nu va fi executat.

Soluție prin tratarea excepțiilor

Să vedem soluția problemei de mai sus printr-un bloc java try-catch.

Exemplul 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'); } } 
Testează-l acum

Ieșire:

java convertește caracterul în șir
 java.lang.ArithmeticException: / by zero rest of the code 

După cum este afișat în exemplul de mai sus, restul codului este executat, adică restul codului declarația este tipărită.

Exemplul 3

În acest exemplu, am păstrat și codul într-un bloc try care nu va arunca o excepție.

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); } } } 
Testează-l acum

Ieșire:

 java.lang.ArithmeticException: / by zero 

Aici, putem vedea că dacă apare o excepție în blocul try, restul codului blocului nu se va executa.

Exemplul 4

Aici, gestionăm excepția folosind excepția clasei părinte.

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'); } } 
Testează-l acum

Ieșire:

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

Exemplul 5

Să vedem un exemplu pentru a tipări un mesaj personalizat la excepție.

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'); } } } 
Testează-l acum

Ieșire:

 Can't divided by zero 

Exemplul 6

Să vedem un exemplu pentru a rezolva excepția într-un bloc 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)); } } } 
Testează-l acum

Ieșire:

 25 

Exemplul 7

În acest exemplu, împreună cu blocul try, includem și codul de excepție într-un bloc 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'); } } 
Testează-l acum

Ieșire:

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

Aici, putem vedea că blocul catch nu conține codul de excepție. Așadar, includeți codul de excepție într-un bloc try și utilizați blocul catch numai pentru a gestiona excepțiile.

Exemplul 8

În acest exemplu, gestionăm excepția generată (Excepție aritmetică) cu un alt tip de clasă de excepție (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'); } } 
Testează-l acum

Ieșire:

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

Exemplul 9

Să vedem un exemplu pentru a gestiona o altă excepție neverificată.

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'); } } 
Testează-l acum

Ieșire:

ce este hashmap java
 java.lang.ArrayIndexOutOfBoundsException: 10 rest of the code 

Exemplul 10

Să vedem un exemplu pentru a gestiona excepția verificată.

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'); } } 
Testează-l acum

Ieșire:

 File saved successfully