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