logo

Java vihdoin estää

Java vihdoin estää on lohko, jota käytetään tärkeän koodin suorittamiseen, kuten yhteyden sulkemiseen jne.

Java lopuksi esto suoritetaan aina riippumatta siitä, käsitelläänkö poikkeusta vai ei. Siksi se sisältää kaikki tarvittavat lausunnot, jotka on tulostettava riippumatta siitä, tapahtuuko poikkeus vai ei.

Lopullinen lohko seuraa try-catch -lohkoa.

Lopullisen lohkon vuokaavio

Java vihdoin estää

Huomautus: Jos et käsittele poikkeusta, JVM suorittaa lopuksi lohkon ennen ohjelman lopettamista (jos sellainen on).

Miksi käyttää Java vihdoin esto?

  • vihdoin Java-blokkia voidaan käyttää ' siivota '-koodia, kuten tiedoston sulkemista, yhteyden sulkemista jne.
  • Tärkeät tulostettavat lausunnot voidaan sijoittaa viimeiseen lohkoon.

Javan käyttö vihdoinkin

Katsotaanpa erilaisia ​​tapauksia, joissa Javaa voidaan vihdoin käyttää.

Tapaus 1: Kun poikkeusta ei tapahdu

Katsotaanpa alla olevaa esimerkkiä, jossa Java-ohjelma ei tee mitään poikkeusta ja lopullinen lohko suoritetaan try-lohkon jälkeen.

TestFinallyBlock.java

 class TestFinallyBlock { public static void main(String args[]){ try{ //below code do not throw any exception int data=25/5; System.out.println(data); } //catch won't be executed catch(NullPointerException e){ System.out.println(e); } //executed regardless of exception occurred or not finally { System.out.println('finally block is always executed'); } System.out.println('rest of phe code...'); } } 

Lähtö:

Java vihdoin estää

Tapaus 2: Kun tapahtuu poikkeus, jota catch-lohko ei käsittele

Katsotaanpa täyttä esimerkkiä. Tässä koodi heittää poikkeuksen, mutta catch-lohko ei voi käsitellä sitä. Tästä huolimatta viimeinen lohko suoritetaan try-lauseen jälkeen ja sitten ohjelma päättyy epänormaalisti.

TestFinallyBlock1.java

 public class TestFinallyBlock1{ public static void main(String args[]){ try { System.out.println('Inside the try block'); //below code throws divide by zero exception int data=25/0; System.out.println(data); } //cannot handle Arithmetic type exception //can only accept Null Pointer type exception catch(NullPointerException e){ System.out.println(e); } //executes regardless of exception occured or not finally { System.out.println('finally block is always executed'); } System.out.println('rest of the code...'); } } 

Lähtö:

Java vihdoin estää

Tapaus 3: Kun poikkeus tapahtuu ja catch block käsittelee sen

Esimerkki:

Katsotaanpa seuraava esimerkki, jossa Java-koodi heittää poikkeuksen ja catch-lohko käsittelee poikkeuksen. Myöhemmin viimeinen lohko suoritetaan try-catch-lohkon jälkeen. Lisäksi loput koodista suoritetaan normaalisti.

TestFinallyBlock2.java

 public class TestFinallyBlock2{ public static void main(String args[]){ try { System.out.println('Inside try block'); //below code throws divide by zero exception int data=25/0; System.out.println(data); } //handles the Arithmetic Exception / Divide by zero exception catch(ArithmeticException e){ System.out.println('Exception handled'); System.out.println(e); } //executes regardless of exception occured or not finally { System.out.println('finally block is always executed'); } System.out.println('rest of the code...'); } } 

Lähtö:

Java vihdoin estää

Sääntö: Jokaista try-lohkoa kohden voi olla nolla tai useampi saalislohko, mutta lopulta vain yksi lohko.

Huomautus: Lopullista lohkoa ei suoriteta, jos ohjelma poistuu (joko kutsumalla System.exit() tai aiheuttamalla vakavan virheen, joka aiheuttaa prosessin keskeytymisen).