logo

Java try-catch blokas

Java try blokas

Java bandyti blokas naudojamas kodui, kuris gali padaryti išimtį, įtraukti. Jis turi būti naudojamas metodo ribose.

Jei konkrečiame bandymo bloko teiginyje įvyksta išimtis, likęs bloko kodas nebus vykdomas. Taigi, rekomenduojama nelaikyti kodo try bloke, kuris nepadarys išimties.

„Java try block“ turi sekti „catch“ arba „block“.

Java try-catch sintaksė

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

Pabandykite pagaliau blokuoti sintaksė

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

Java gaudymo blokas

„Java“ gaudymo blokas naudojamas išimties tvarkymui, parametre deklaruojant išimties tipą. Paskelbta išimtis turi būti pagrindinės klasės išimtis (t. y. išimtis) arba sugeneruotas išimties tipas. Tačiau geras būdas yra paskelbti sukurtą išimties tipą.

r c kalba

Sugavimo blokas turi būti naudojamas tik po bandymo bloko. Galite naudoti kelis gaudymo blokus su vienu bandymo bloku.

Vidinis Java try-catch bloko veikimas

Java try-catch blokas

JVM pirmiausia patikrina, ar išimtis įgyvendinama, ar ne. Jei išimtis nėra tvarkoma, JVM suteikia numatytąją išimties tvarkyklę, kuri atlieka šias užduotis:

  • Spausdina išimties aprašymą.
  • Spausdina dėklo pėdsaką (metodų hierarchija, kai įvyko išimtis).
  • Sukelia programos nutraukimą.

Bet jei programos programuotojas tvarko išimtį, palaikomas įprastas programos srautas, ty vykdoma likusi kodo dalis.

Problema be išimties tvarkymas

Pabandykime suprasti problemą, jei nenaudojame „try-catch“ bloko.

1 pavyzdys

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'); } } 
Išbandykite dabar

Išvestis:

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

Kaip parodyta aukščiau pateiktame pavyzdyje, likusią kodo dalį nėra vykdomas (tokiu atveju likusią kodo dalį pareiškimas nespausdinamas).

Po išimties gali būti 100 kodo eilučių. Jei išimtis neapdorojama, visas žemiau išimties esantis kodas nebus vykdomas.

Sprendimas naudojant išimtis

Pažiūrėkime, kaip išspręsti aukščiau pateiktą problemą naudojant java try-catch bloką.

2 pavyzdys

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'); } } 
Išbandykite dabar

Išvestis:

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

Kaip parodyta aukščiau pateiktame pavyzdyje, likusią kodo dalį yra vykdomas, t.y likusią kodo dalį atspausdinamas pareiškimas.

3 pavyzdys

Šiame pavyzdyje mes taip pat išsaugojome kodą bandomajame bloke, kuris nepadarys išimties.

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); } } } 
Išbandykite dabar

Išvestis:

 java.lang.ArithmeticException: / by zero 

Čia matome, kad jei bandomajame bloke įvyksta išimtis, likęs bloko kodas nebus vykdomas.

4 pavyzdys

Čia mes tvarkome išimtį naudodami pirminės klasės išimtį.

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'); } } 
Išbandykite dabar

Išvestis:

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

5 pavyzdys

Pažiūrėkime, kaip spausdinti pasirinktinį pranešimą išimties atveju.

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'); } } } 
Išbandykite dabar

Išvestis:

 Can't divided by zero 

6 pavyzdys

Pažiūrėkime pavyzdį, kaip išspręsti išimtį gaudymo bloke.

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)); } } } 
Išbandykite dabar

Išvestis:

 25 

7 pavyzdys

Šiame pavyzdyje kartu su bandomuoju bloku taip pat įtraukiame išimties kodą į gaudymo bloką.

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'); } } 
Išbandykite dabar

Išvestis:

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

Čia matome, kad gaudymo bloke nebuvo išimties kodo. Taigi, įtraukite išimties kodą į bandomąjį bloką ir naudokite tik išimčių bloką.

8 pavyzdys

Šiame pavyzdyje mes tvarkome sugeneruotą išimtį (aritmetinę išimtį) naudodami kitokio tipo išimties klasę (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'); } } 
Išbandykite dabar

Išvestis:

dvejetainių medžių rūšys
 Exception in thread 'main' java.lang.ArithmeticException: / by zero 

9 pavyzdys

Pažiūrėkime, kaip elgtis su kita nepažymėta išimtimi.

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'); } } 
Išbandykite dabar

Išvestis:

 java.lang.ArrayIndexOutOfBoundsException: 10 rest of the code 

10 pavyzdys

Pažiūrėkime, kaip tvarkyti pažymėtą išimtį.

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'); } } 
Išbandykite dabar

Išvestis:

 File saved successfully