Finally-lohko
Pyyhkäise näyttääksesi valikon
finally-lohko Javassa on olennainen osa poikkeusten käsittelyä, joka varmistaa, että tietyt koodit suoritetaan aina riippumatta siitä, mitä try- tai catch-lohkoissa tapahtuu.
finally-lohkoa käytetään tyypillisesti resurssien vapauttamiseen, kuten tiedostojen sulkemiseen, verkkoyhteyksien vapauttamiseen tai muistin puhdistamiseen, jotta sovellus pysyy vakaana ja tehokkaana myös virhetilanteissa.
try {
// code
} catch {
// code
} finally {
// code
}
finally-lohkon suoritus on erityistä, koska se suoritetaan aina, kun siihen liittyvä try-lause päättyy, riippumatta siitä, heitettiinkö poikkeus vai ei. Jos try-lohkon sisällä tapahtuu poikkeus ja se käsitellään catch-lohkossa, finally-lohko suoritetaan catch-lohkon jälkeen. Jos poikkeusta ei heitetä, finally-lohko suoritetaan silti try-lohkon jälkeen. Vaikka try- tai catch-lohkossa olisi return-lause, finally-lohko suoritetaan ennen kuin metodi palauttaa ohjauksen kutsujalle. Tämä tekee finally-lohkosta luotettavan paikan toimille, jotka on aina suoritettava, kuten tiedostojen sulkeminen tai muiden resurssien vapauttaminen.
Main.java
12345678910111213141516171819202122package com.example; public class Main { public static void main(String[] args) { String[] numbers = {"10", "20", "not-a-number", "40"}; int index = 2; int result = 0; try { System.out.println("Attempting to parse value..."); result = Integer.parseInt(numbers[index]); System.out.println("Parsed value: " + result); } catch (NumberFormatException e) { System.out.println("Parsing failed: " + e.getMessage()); } finally { // This block always executes System.out.println("The 'finally' block has executed — cleanup or final steps go here."); } System.out.println("Program continues..."); } }
finally-lohko Javassa on erityinen lohko, joka suoritetaan aina try-lohkon jälkeen riippumatta siitä, heitettiinkö poikkeus tai käsiteltiinkö se. Sitä käytetään varmistamaan, että tärkeät loppuvaiheen toimet, kuten resurssien sulkeminen tai siivoustoimet, suoritetaan aina.
Yllä olevassa esimerkissä ohjelma yrittää jäsentää arvon taulukosta. Vaikka jäsentäminen epäonnistuisi ja catch-lohko suoritettaisiin, finally-lohko suoritetaan silti, mikä takaa, että lopullinen viesti tulostetaan ja tarvittavat siivoustoimet tehdään. Tämä tekee ohjelmasta luotettavamman ja estää resurssivuodot.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme