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