logo

Java try-catch-blok

Java-probeerblok

Java poging blok wordt gebruikt om de code in te sluiten die een uitzondering kan veroorzaken. Het moet binnen de methode worden gebruikt.

Als er een uitzondering optreedt bij de specifieke instructie in het try-blok, wordt de rest van de blokcode niet uitgevoerd. Het wordt dus aanbevolen om de code niet in het try-blok te bewaren dat geen uitzondering genereert.

Het Java-try-blok moet worden gevolgd door een catch- of een final-block.

Syntaxis van Java try-catch

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

Syntaxis van try-finally-blok

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

Java-vangstblok

Java catch block wordt gebruikt om de uitzondering af te handelen door het type uitzondering binnen de parameter te declareren. De gedeclareerde uitzondering moet de uitzondering van de bovenliggende klasse zijn (d.w.z. Uitzondering) of het gegenereerde uitzonderingstype. Het is echter een goede aanpak om het gegenereerde type uitzondering te declareren.

java lambda voorbeeld

Het catch-blok mag alleen na het try-blok worden gebruikt. U kunt meerdere catch-blokken gebruiken met één try-blok.

Interne werking van Java try-catch-blok

Java try-catch-blok

De JVM controleert eerst of de uitzondering wordt afgehandeld of niet. Als de uitzondering niet wordt afgehandeld, biedt JVM een standaard uitzonderingshandler die de volgende taken uitvoert:

  • Drukt de uitzonderingsbeschrijving af.
  • Drukt de stacktracering af (hiërarchie van methoden waarbij de uitzondering heeft plaatsgevonden).
  • Zorgt ervoor dat het programma wordt beëindigd.

Maar als de applicatieprogrammeur de uitzondering afhandelt, blijft de normale stroom van de applicatie behouden, dat wil zeggen dat de rest van de code wordt uitgevoerd.

Probleem zonder uitzondering afhandeling

Laten we proberen het probleem te begrijpen als we geen try-catch-blok gebruiken.

voorbeeld 1

ProbeerCatchExample1.java

 public class TryCatchExample1 { public static void main(String[] args) { int data=50/0; //may throw exception System.out.println('rest of the code'); } } 
Test het nu

Uitgang:

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

Zoals weergegeven in het bovenstaande voorbeeld, is de rest van de code wordt niet uitgevoerd (in dat geval wordt de rest van de code verklaring wordt niet afgedrukt).

Er kunnen na de uitzondering 100 regels code staan. Als de uitzondering niet wordt afgehandeld, wordt alle code onder de uitzondering niet uitgevoerd.

Oplossing door afhandeling van uitzonderingen

Laten we eens kijken naar de oplossing van het bovenstaande probleem door een Java try-catch-blok.

Voorbeeld 2

ProbeerCatchExample2.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'); } } 
Test het nu

Uitgang:

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

Zoals weergegeven in het bovenstaande voorbeeld, is de rest van de code wordt uitgevoerd, d.w.z. de rest van de code verklaring wordt afgedrukt.

Voorbeeld 3

In dit voorbeeld hebben we de code ook in een try-blok bewaard dat geen uitzondering genereert.

ProbeerCatchExample3.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); } } } 
Test het nu

Uitgang:

 java.lang.ArithmeticException: / by zero 

Hier kunnen we zien dat als er een uitzondering optreedt in het try-blok, de rest van de blokcode niet wordt uitgevoerd.

Voorbeeld 4

Hier behandelen we de uitzondering met behulp van de uitzondering van de bovenliggende klasse.

ProbeerCatchExample4.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'); } } 
Test het nu

Uitgang:

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

Voorbeeld 5

Laten we een voorbeeld bekijken van het afdrukken van een aangepast bericht bij uitzondering.

ProbeerCatchExample5.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'); } } } 
Test het nu

Uitgang:

 Can't divided by zero 

Voorbeeld 6

Laten we een voorbeeld bekijken om de uitzondering in een catch-blok op te lossen.

Cassidy Hutchinson-onderwijs

ProbeerCatchExample6.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)); } } } 
Test het nu

Uitgang:

 25 

Voorbeeld 7

In dit voorbeeld plaatsen we naast het try-blok ook uitzonderingscode in een catch-blok.

ProbeerCatchExample7.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'); } } 
Test het nu

Uitgang:

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

Hier kunnen we zien dat het catch-blok de uitzonderingscode niet bevatte. Plaats dus de uitzonderingscode in een try-blok en gebruik het catch-blok alleen om de uitzonderingen af ​​te handelen.

Voorbeeld 8

In dit voorbeeld verwerken we de gegenereerde uitzondering (Arithmetic Exception) met een ander type uitzonderingsklasse (ArrayIndexOutOfBoundsException).

ProbeerCatchExample8.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'); } } 
Test het nu

Uitgang:

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

Voorbeeld 9

Laten we een voorbeeld bekijken om nog een niet-gecontroleerde uitzondering af te handelen.

ProbeerCatchExample9.java

c# bevat tekenreeks
 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'); } } 
Test het nu

Uitgang:

 java.lang.ArrayIndexOutOfBoundsException: 10 rest of the code 

Voorbeeld 10

Laten we een voorbeeld bekijken om gecontroleerde uitzonderingen af ​​te handelen.

ProbeerCatchExample10.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'); } } 
Test het nu

Uitgang:

 File saved successfully