logo

Java try-catch bloks

Java mēģinājuma bloks

Java mēģināt bloks tiek izmantots, lai iekļautu kodu, kas var radīt izņēmumu. Tas ir jāizmanto metodes ietvaros.

Ja konkrētajā try blokā esošajā paziņojumā notiek izņēmums, pārējais bloka kods netiks izpildīts. Tāpēc ieteicams neglabāt kodu try blokā, kas neradīs izņēmumu.

Java try block ir jāseko vai nu noķeršanai, vai beigu blokam.

Java try-catch sintakse

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

Mēģiniet beidzot bloķēt sintakse

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

Java nozvejas bloks

Java nozvejas bloks tiek izmantots, lai apstrādātu izņēmumu, parametrā deklarējot izņēmuma veidu. Deklarētajam izņēmumam ir jābūt vecākklases izņēmumam (t.i., Izņēmumam) vai ģenerētajam izņēmuma veidam. Tomēr laba pieeja ir ģenerētā izņēmuma veida deklarēšana.

instantiēta java

Noķeršanas bloks ir jāizmanto tikai pēc mēģinājuma bloka. Varat izmantot vairākus nozvejas blokus ar vienu mēģinājuma bloku.

Java try-catch bloka iekšējā darbība

Java try-catch bloks

JVM vispirms pārbauda, ​​vai izņēmums ir apstrādāts vai nē. Ja izņēmums netiek apstrādāts, JVM nodrošina noklusējuma izņēmumu apstrādātāju, kas veic šādus uzdevumus:

  • Izdrukā izņēmuma aprakstu.
  • Izdrukā steka trasējumu (to metožu hierarhija, kur noticis izņēmums).
  • Izraisa programmas darbības pārtraukšanu.

Bet, ja lietojumprogrammas programmētājs apstrādā izņēmumu, tiek uzturēta parastā lietojumprogrammas plūsma, t.i., tiek izpildīta pārējā koda daļa.

Problēma bez izņēmuma apstrādi

Mēģināsim izprast problēmu, ja neizmantojam try-catch bloku.

1. piemērs

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'); } } 
Izmēģiniet to tūlīt

Izvade:

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

Kā parādīts iepriekš minētajā piemērā, pārējā koda daļa netiek izpildīts (tādā gadījumā pārējā koda daļa paziņojums netiek drukāts).

Pēc izņēmuma var būt 100 koda rindiņas. Ja izņēmums netiek apstrādāts, viss kods zem izņēmuma netiks izpildīts.

Risinājums ar izņēmuma apstrādi

Apskatīsim iepriekš minētās problēmas risinājumu, izmantojot Java try-catch bloku.

2. piemērs

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'); } } 
Izmēģiniet to tūlīt

Izvade:

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

Kā parādīts iepriekš minētajā piemērā, pārējā koda daļa tiek izpildīts, t.i., pārējā koda daļa paziņojums tiek izdrukāts.

3. piemērs

Šajā piemērā mēs arī saglabājām kodu izmēģinājuma blokā, kas neradīs izņēmumu.

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); } } } 
Izmēģiniet to tūlīt

Izvade:

 java.lang.ArithmeticException: / by zero 

Šeit mēs redzam, ka, ja mēģinājuma blokā notiek izņēmums, pārējais bloka kods netiks izpildīts.

4. piemērs

Šeit mēs apstrādājam izņēmumu, izmantojot vecāku klases izņēmumu.

Madhuri teica, nāc

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'); } } 
Izmēģiniet to tūlīt

Izvade:

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

5. piemērs

Apskatīsim piemēru pielāgota ziņojuma drukāšanai izņēmuma gadījumā.

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'); } } } 
Izmēģiniet to tūlīt

Izvade:

 Can't divided by zero 

6. piemērs

Apskatīsim piemēru, kā novērst izņēmumu uztveršanas blokā.

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)); } } } 
Izmēģiniet to tūlīt

Izvade:

 25 

7. piemērs

Šajā piemērā kopā ar izmēģinājuma bloku mēs arī iekļaujam izņēmuma kodu uztveršanas 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'); } } 
Izmēģiniet to tūlīt

Izvade:

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

Šeit mēs redzam, ka nozvejas blokā nebija izņēmuma koda. Tāpēc iekļaujiet izņēmuma kodu izmēģinājuma blokā un izmantojiet tikai noķeršanas bloku, lai apstrādātu izņēmumus.

8. piemērs

Šajā piemērā mēs apstrādājam ģenerēto izņēmumu (aritmētisko izņēmumu) ar cita veida izņēmuma klasi (ArrayIndexOutOfBoundsException).

TryCatchExample8.java

i d e pilna forma
 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'); } } 
Izmēģiniet to tūlīt

Izvade:

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

9. piemērs

Apskatīsim piemēru, kā rīkoties ar citu neatzīmētu izņēmumu.

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'); } } 
Izmēģiniet to tūlīt

Izvade:

 java.lang.ArrayIndexOutOfBoundsException: 10 rest of the code 

10. piemērs

Apskatīsim piemēru pārbaudītā izņēmuma apstrādei.

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'); } } 
Izmēģiniet to tūlīt

Izvade:

 File saved successfully