logo

Java try-catch lohko

Java try block

Java yrittää lohkoa käytetään sulkemaan koodi, joka saattaa aiheuttaa poikkeuksen. Sitä on käytettävä menetelmän sisällä.

Jos try-lohkon tietyssä käskyssä tapahtuu poikkeus, lohkokoodin loppuosa ei suoriteta. Joten on suositeltavaa olla pitämättä koodia try-lohkossa, joka ei aiheuta poikkeusta.

Java try -lohkon perässä on oltava joko catch tai final block.

Java try-catchin syntaksi

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

Yritä lopuksi -blokin syntaksi

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

Java catch block

Java catch -lohkoa käytetään poikkeuksen käsittelemiseen ilmoittamalla poikkeuksen tyyppi parametrissa. Ilmoitetun poikkeuksen on oltava pääluokan poikkeus (eli poikkeus) tai luotu poikkeustyyppi. Hyvä tapa on kuitenkin ilmoittaa luotu poikkeustyyppi.

komento node js:ssä

Catch-lohkoa tulee käyttää vain try-lohkon jälkeen. Voit käyttää useita kiinnityslohkoja yhdellä kokeilulohkolla.

Java try-catch -lohkon sisäinen toiminta

Java try-catch lohko

JVM tarkistaa ensin, onko poikkeus käsitelty vai ei. Jos poikkeusta ei käsitellä, JVM tarjoaa oletusarvoisen poikkeuskäsittelijän, joka suorittaa seuraavat tehtävät:

  • Tulostaa poikkeuskuvauksen.
  • Tulostaa pinon jäljen (menetelmien hierarkia, jossa poikkeus tapahtui).
  • Aiheuttaa ohjelman lopettamisen.

Mutta jos sovellusohjelmoija käsittelee poikkeuksen, sovelluksen normaali kulku säilyy, eli loput koodista suoritetaan.

Ongelma poikkeuksetta käsittelyssä

Yritetään ymmärtää ongelma, jos emme käytä try-catch -lohkoa.

Esimerkki 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'); } } 
Testaa nyt

Lähtö:

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

Kuten yllä olevassa esimerkissä näkyy, loput koodista ei suoriteta (tässä tapauksessa loput koodista lausuntoa ei tulosteta).

Poikkeuksen jälkeen koodia voi olla 100 riviä. Jos poikkeusta ei käsitellä, kaikkea poikkeuksen alla olevaa koodia ei suoriteta.

Ratkaisu poikkeuskäsittelyllä

Katsotaanpa ratkaisua yllä olevaan ongelmaan Java try-catch -blokilla.

Esimerkki 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'); } } 
Testaa nyt

Lähtö:

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

Kuten yllä olevassa esimerkissä näkyy, loput koodista suoritetaan, eli loput koodista lausunto on painettu.

Esimerkki 3

Tässä esimerkissä säilytimme koodin myös try-lohkossa, joka ei aiheuta poikkeusta.

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); } } } 
Testaa nyt

Lähtö:

 java.lang.ArithmeticException: / by zero 

Tässä voimme nähdä, että jos try-lohkossa tapahtuu poikkeus, loput lohkokoodista eivät suoriudu.

Esimerkki 4

Tässä käsittelemme poikkeusta käyttämällä yläluokan poikkeusta.

for silmukan tyypit

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'); } } 
Testaa nyt

Lähtö:

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

Esimerkki 5

Katsotaanpa esimerkki mukautetun viestin tulostamisesta poikkeustilanteessa.

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'); } } } 
Testaa nyt

Lähtö:

 Can't divided by zero 

Esimerkki 6

Katsotaanpa esimerkkiä poikkeuksen ratkaisemiseksi catch-lohkossa.

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)); } } } 
Testaa nyt

Lähtö:

 25 

Esimerkki 7

Tässä esimerkissä liitämme try blockin lisäksi poikkeuskoodin catch-lohkoon.

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'); } } 
Testaa nyt

Lähtö:

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

Tässä voimme nähdä, että catch-lohko ei sisältänyt poikkeuskoodia. Liitä siis poikkeuskoodi try-lohkoon ja käytä catch blockia vain poikkeuksien käsittelemiseen.

Esimerkki 8

Tässä esimerkissä käsittelemme luotua poikkeusta (Aritmeettinen poikkeus) erityyppisellä poikkeusluokalla (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'); } } 
Testaa nyt

Lähtö:

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

Esimerkki 9

Katsotaanpa esimerkkiä toisen valitsemattoman poikkeuksen käsittelemiseksi.

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'); } } 
Testaa nyt

Lähtö:

 java.lang.ArrayIndexOutOfBoundsException: 10 rest of the code 

Esimerkki 10

Katsotaanpa esimerkkiä valitun poikkeuksen käsittelemiseksi.

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'); } } 
Testaa nyt

Lähtö:

purkaminen linuxissa
 File saved successfully