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

phptry {
  // Koodi, joka voi aiheuttaa poikkeuksen
} catch (Exception $e) {
  // Poikkeuksen käsittely
} finally {
  // Koodi, joka suoritetaan kaikissa tapauksissa
}

Esimerkki

Esimerkki onnistuneesta koodin suorituksesta:

php<?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:

phpTulos: 5
Tämä suoritetaan aina

Esimerkki

Esimerkki poikkeuksen käsittelystä:

php<?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:

phpPoikkeus: Division by zero
Tämä suoritetaan aina

Esimerkki

Finally:n käyttö resurssien vapauttamiseen:

php<?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:

phpTiedosto avattu onnistuneesti
Tiedosto suljettu finally-lohkossa

Katso myös

  • rakenteen try,
    jota käytetään poikkeusten käsittelyyn
  • luokan Exception,
    joka on kaikkien poikkeusten perusluokka