Komanda finally

Blokas finally naudojamas kartu su konstrukcijomis try ir catch išimtims apdoroti. Kodas finally viduje vyks bet kuriuo atveju - tiek sėkmingai įvykdžius try-bloką, tiek ir atsiradus išimčiai.

Sintaksė

phptry {
  // Kodas, kuris gali sukelti išimtį
} catch (Exception $e) {
  // Išimties apdorojimas
} finally {
  // Kodas, kuris bus vykdomas bet kuriuo atveju
}

Pavyzdys

Pavyzdys su sėkmingu kodo vykdymu:

php<?php
try {
  $res = 10 / 2;
  echo "Rezultatas: " . $res . "\n";
} catch (Exception $e) {
  echo "Išimtis: " . $e->getMessage() . "\n";
} finally {
  echo "Tai bus vykdoma visada\n";
}
?>

Kodo vykdymo rezultatas:

phpRezultatas: 5
Tai bus vykdoma visada

Pavyzdys

Pavyzdys su išimties apdorojimu:

php<?php
try {
  $res = 10 / 0;
  echo "Rezultatas: " . $res . "\n";
} catch (Exception $e) {
  echo "Išimtis: " . $e->getMessage() . "\n";
} finally {
  echo "Tai bus vykdoma visada\n";
}
?>

Kodo vykdymo rezultatas:

phpIšimtis: Dalyba iš nulio
Tai bus vykdoma visada

Pavyzdys

Finally naudojimas išteklių atlaisvinimui:

php<?php
$file = fopen("example.txt", "r");
try {
  // Darbas su failu
  if ($file) {
    echo "Failas atidarytas sėkmingai\n";
  }
} catch (Exception $e) {
  echo "Išimtis: " . $e->getMessage() . "\n";
} finally {
  if ($file) {
    fclose($file);
    echo "Failas uždarytas finally bloke\n";
  }
}
?>

Kodo vykdymo rezultatas:

phpFailas atidarytas sėkmingai
Failas uždarytas finally bloke

Taip pat žiūrėkite

  • konstrukciją try,
    kuri naudojama išimtims apdoroti
  • klasę Exception,
    kuri yra bazinis klasė visoms išimtims