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