Instrukcja finally
Blok finally jest używany razem z konstrukcjami try i catch do obsługi wyjątków. Kod wewnątrz finally wykona się w każdym przypadku - zarówno przy pomyślnym wykonaniu bloku try, jak i przy wystąpieniu wyjątku.
Składnia
try {
// Kod, który może wywołać wyjątek
} catch (Exception $e) {
// Obsługa wyjątku
} finally {
// Kod, który wykona się w każdym przypadku
}
Przykład
Przykład z pomyślnym wykonaniem kodu:
<?php
try {
$res = 10 / 2;
echo "Wynik: " . $res . "\n";
} catch (Exception $e) {
echo "Wyjątek: " . $e->getMessage() . "\n";
} finally {
echo "To wykona się zawsze\n";
}
?>
Wynik wykonania kodu:
Wynik: 5
To wykona się zawsze
Przykład
Przykład z obsługą wyjątku:
<?php
try {
$res = 10 / 0;
echo "Wynik: " . $res . "\n";
} catch (Exception $e) {
echo "Wyjątek: " . $e->getMessage() . "\n";
} finally {
echo "To wykona się zawsze\n";
}
?>
Wynik wykonania kodu:
Wyjątek: Division by zero
To wykona się zawsze
Przykład
Użycie finally do zwolnienia zasobów:
<?php
$file = fopen("example.txt", "r");
try {
// Praca z plikiem
if ($file) {
echo "Plik otwarty pomyślnie\n";
}
} catch (Exception $e) {
echo "Wyjątek: " . $e->getMessage() . "\n";
} finally {
if ($file) {
fclose($file);
echo "Plik zamknięty w bloku finally\n";
}
}
?>
Wynik wykonania kodu:
Plik otwarty pomyślnie
Plik zamknięty w bloku finally