logo

Java poskusni blok

Java poskusni blok

Java poskusi blok se uporablja za pritrditev kode, ki lahko povzroči izjemo. Uporabiti ga je treba znotraj metode.

Če pride do izjeme pri določenem stavku v bloku poskusa, se preostali del kode bloka ne bo izvedel. Zato je priporočljivo, da kode ne hranite v poskusnem bloku, ki ne bo sprožil izjeme.

Java poskusnemu bloku mora slediti blok catch ali finally.

Sintaksa Java try-catch

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

Sintaksa bloka try-finally

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

Java catch block

Java catch block se uporablja za obravnavanje izjeme z deklaracijo vrste izjeme znotraj parametra. Navedena izjema mora biti izjema nadrejenega razreda (tj. Izjema) ali tip ustvarjene izjeme. Vendar pa je dober pristop razglasiti ustvarjeno vrsto izjeme.

niz v jsonobject

Blok catch je treba uporabiti samo po poskusnem bloku. Z enim poskusnim blokom lahko uporabite več blokov catch.

Notranje delovanje Java poskusnega bloka

Java poskusni blok

JVM najprej preveri, ali je izjema obravnavana ali ne. Če izjema ni obravnavana, JVM zagotovi privzeti obravnavalec izjem, ki izvaja naslednje naloge:

  • Natisne opis izjeme.
  • Natisne sled sklada (hierarhija metod, kjer je prišlo do izjeme).
  • Povzroči prekinitev programa.

Toda če aplikacijski programer obravnava izjemo, se normalni tok aplikacije ohrani, tj. izvede se preostala koda.

Težava brez obravnave izjem

Poskusimo razumeti težavo, če ne uporabimo bloka try-catch.

Primer 1

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'); } } 
Preizkusite zdaj

Izhod:

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

Kot je prikazano v zgornjem primeru, je preostali del kode se ne izvede (v tem primeru se preostali del kode izjava ni natisnjena).

Za izjemo je lahko 100 vrstic kode. Če izjema ni obravnavana, vsa koda pod izjemo ne bo izvedena.

Rešitev z obravnavanjem izjem

Oglejmo si rešitev zgornje težave z javanskim blokom try-catch.

Primer 2

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'); } } 
Preizkusite zdaj

Izhod:

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

Kot je prikazano v zgornjem primeru, je preostali del kode se izvaja, tj preostali del kode izjava je natisnjena.

Primer 3

V tem primeru smo kodo ohranili tudi v poskusnem bloku, ki ne bo vrgel izjeme.

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); } } } 
Preizkusite zdaj

Izhod:

 java.lang.ArithmeticException: / by zero 

Tukaj lahko vidimo, da če pride do izjeme v poskusnem bloku, se preostali del blokovne kode ne bo izvedel.

Primer 4

Tukaj obravnavamo izjemo z izjemo nadrejenega razreda.

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'); } } 
Preizkusite zdaj

Izhod:

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

Primer 5

Oglejmo si primer tiskanja sporočila po meri ob izjemi.

TryCatchExample5.java

pretvori niz v json 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'); } } } 
Preizkusite zdaj

Izhod:

 Can't divided by zero 

Primer 6

Oglejmo si primer za razrešitev izjeme v bloku catch.

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)); } } } 
Preizkusite zdaj

Izhod:

 25 

Primer 7

V tem primeru skupaj s poskusnim blokom v blok catch priložimo tudi kodo izjeme.

huffmanova koda za kodiranje

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'); } } 
Preizkusite zdaj

Izhod:

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

Tukaj lahko vidimo, da blok catch ni vseboval kode izjeme. Torej priložite kodo izjeme znotraj poskusnega bloka in uporabite blok catch samo za obravnavanje izjem.

Primer 8

V tem primeru obravnavamo ustvarjeno izjemo (Aritmetična izjema) z drugo vrsto razreda izjem (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'); } } 
Preizkusite zdaj

Izhod:

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

Primer 9

Oglejmo si primer obravnave druge nepreverjene izjeme.

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'); } } 
Preizkusite zdaj

Izhod:

 java.lang.ArrayIndexOutOfBoundsException: 10 rest of the code 

Primer 10

Oglejmo si primer obravnave preverjene izjeme.

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'); } } 
Preizkusite zdaj

Izhod:

 File saved successfully