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

phptry {
  // 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<?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:

phpWynik: 5
To wykona się zawsze

Przykład

Przykład z obsługą wyjątku:

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

phpWyjątek: Division by zero
To wykona się zawsze

Przykład

Użycie finally do zwolnienia zasobów:

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

phpPlik otwarty pomyślnie
Plik zamknięty w bloku finally

Zobacz też

  • konstrukcję try,
    która jest używana do obsługi wyjątków
  • klasę Exception,
    która jest klasą bazową dla wszystkich wyjątków