De finally Opdracht

Het blok finally wordt gebruikt samen met de constructies try en catch voor de afhandeling van uitzonderingen. De code binnen finally wordt in elk geval uitgevoerd - zowel bij succesvolle uitvoering van het try-blok als bij het optreden van een uitzondering.

Syntaxis

phptry {
  // Code die een uitzondering kan veroorzaken
} catch (Exception $e) {
  // Afhandeling van de uitzondering
} finally {
  // Code die in elk geval wordt uitgevoerd
}

Voorbeeld

Voorbeeld met succesvolle uitvoering van code:

php<?php
try {
  $res = 10 / 2;
  echo "Resultaat: " . $res . "\n";
} catch (Exception $e) {
  echo "Uitzondering: " . $e->getMessage() . "\n";
} finally {
  echo "Dit wordt altijd uitgevoerd\n";
}
?>

Resultaat van code-uitvoering:

phpResultaat: 5
Dit wordt altijd uitgevoerd

Voorbeeld

Voorbeeld met afhandeling van een uitzondering:

php<?php
try {
  $res = 10 / 0;
  echo "Resultaat: " . $res . "\n";
} catch (Exception $e) {
  echo "Uitzondering: " . $e->getMessage() . "\n";
} finally {
  echo "Dit wordt altijd uitgevoerd\n";
}
?>

Resultaat van code-uitvoering:

phpUitzondering: Divisie door nul
Dit wordt altijd uitgevoerd

Voorbeeld

Finally gebruiken voor het vrijgeven van bronnen:

php<?php
$file = fopen("example.txt", "r");
try {
  // Werken met het bestand
  if ($file) {
    echo "Bestand succesvol geopend\n";
  }
} catch (Exception $e) {
  echo "Uitzondering: " . $e->getMessage() . "\n";
} finally {
  if ($file) {
    fclose($file);
    echo "Bestand gesloten in finally blok\n";
  }
}
?>

Resultaat van code-uitvoering:

phpBestand succesvol geopend
Bestand gesloten in finally blok

Zie ook

  • de constructie try,
    die wordt gebruikt voor de afhandeling van uitzonderingen
  • de klasse Exception,
    die de basisklasse is voor alle uitzonderingen