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ė
try {
// 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
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:
Rezultatas: 5
Tai bus vykdoma visada
Pavyzdys
Pavyzdys su išimties apdorojimu:
<?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:
Išimtis: Dalyba iš nulio
Tai bus vykdoma visada
Pavyzdys
Finally naudojimas išteklių atlaisvinimui:
<?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:
Failas atidarytas sėkmingai
Failas uždarytas finally bloke