La commande finally

Le bloc finally est utilisé avec les constructions try et catch pour la gestion des exceptions. Le code à l'intérieur de finally s'exécutera dans tous les cas - que le bloc try s'exécute avec succès ou qu'une exception se produise.

Syntaxe

phptry {
  // Code susceptible de lever une exception
} catch (Exception $e) {
  // Gestion de l'exception
} finally {
  // Code qui s'exécutera dans tous les cas
}

Exemple

Exemple avec une exécution réussie du code :

php<?php
try {
  $res = 10 / 2;
  echo "Result: " . $res . "\n";
} catch (Exception $e) {
  echo "Exception: " . $e->getMessage() . "\n";
} finally {
  echo "This will always execute\n";
}
?>

Résultat de l'exécution du code :

phpResult: 5
This will always execute

Exemple

Exemple avec gestion d'une exception :

php<?php
try {
  $res = 10 / 0;
  echo "Result: " . $res . "\n";
} catch (Exception $e) {
  echo "Exception: " . $e->getMessage() . "\n";
} finally {
  echo "This will always execute\n";
}
?>

Résultat de l'exécution du code :

phpException: Division by zero
This will always execute

Exemple

Utilisation de finally pour libérer des ressources :

php<?php
$file = fopen("example.txt", "r");
try {
  // Travail avec le fichier
  if ($file) {
    echo "File opened successfully\n";
  }
} catch (Exception $e) {
  echo "Exception: " . $e->getMessage() . "\n";
} finally {
  if ($file) {
    fclose($file);
    echo "File closed in finally block\n";
  }
}
?>

Résultat de l'exécution du code :

phpFile opened successfully
File closed in finally block

Voir aussi

  • la construction try,
    qui est utilisée pour la gestion des exceptions
  • la classe Exception,
    qui est la classe de base pour toutes les exceptions