Komento finally
Lohkoa finally käytetään yhdessä rakenteiden try ja catch kanssa poikkeusten käsittelyyn. Lohkon finally sisällä oleva koodi suoritetaan kaikissa tapauksissa - sekä try-lohkon onnistuneessa suorituksessa että poikkeuksen sattuessa.
Syntaksi
try {
// Koodi, joka voi aiheuttaa poikkeuksen
} catch (Exception $e) {
// Poikkeuksen käsittely
} finally {
// Koodi, joka suoritetaan kaikissa tapauksissa
}
Esimerkki
Esimerkki onnistuneesta koodin suorituksesta:
<?php
try {
$res = 10 / 2;
echo "Tulos: " . $res . "\n";
} catch (Exception $e) {
echo "Poikkeus: " . $e->getMessage() . "\n";
} finally {
echo "Tämä suoritetaan aina\n";
}
?>
Koodin suorituksen tulos:
Tulos: 5
Tämä suoritetaan aina
Esimerkki
Esimerkki poikkeuksen käsittelystä:
<?php
try {
$res = 10 / 0;
echo "Tulos: " . $res . "\n";
} catch (Exception $e) {
echo "Poikkeus: " . $e->getMessage() . "\n";
} finally {
echo "Tämä suoritetaan aina\n";
}
?>
Koodin suorituksen tulos:
Poikkeus: Division by zero
Tämä suoritetaan aina
Esimerkki
Finally:n käyttö resurssien vapauttamiseen:
<?php
$file = fopen("example.txt", "r");
try {
// Työskentely tiedoston kanssa
if ($file) {
echo "Tiedosto avattu onnistuneesti\n";
}
} catch (Exception $e) {
echo "Poikkeus: " . $e->getMessage() . "\n";
} finally {
if ($file) {
fclose($file);
echo "Tiedosto suljettu finally-lohkossa\n";
}
}
?>
Koodin suorituksen tulos:
Tiedosto avattu onnistuneesti
Tiedosto suljettu finally-lohkossa