Menu
Coddy logo textTech

Le bloc 'finally'

Fait partie de la section Logique & Flux du Journey PHP de Coddy — leçon 54 sur 68.

Parfois, vous avez besoin d'un code qui s'exécute indépendamment du fait qu'une exception se produise ou non. Le bloc finally offre cette garantie : il contient du code qui s'exécutera toujours après la fin d'un bloc try...catch, ce qui le rend parfait pour les opérations de nettoyage comme la fermeture de fichiers ou de connexions à une base de données.

Le bloc finally s'exécute dans tous les scénarios : lorsque le bloc try réussit sans exceptions, lorsqu'une exception est levée et interceptée, et même lorsqu'une exception est levée mais n'est pas interceptée. Cette fiabilité le rend inestimable pour garantir que le code de nettoyage important s'exécute toujours.

<?php
try {
    echo "Attempting operation...\n";
    // Code qui pourrait lever une exception
} catch (Exception $e) {
    echo "Error: " . $e->getMessage() . "\n";
} finally {
    echo "Cleanup completed.\n";
}
?>

Le bloc finally s'exécute après que les blocs try et catch se sont terminés, offrant un emplacement cohérent pour le code de nettoyage essentiel. Cela garantit que votre script gère correctement les ressources et maintient un état propre, quel que soit ce qui se passe pendant l'exécution.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

challenge icon

Défi

Facile

Vous recevrez deux entrées : un type d'opération et un nombre. La première entrée est une chaîne de caractères qui sera soit "divide" soit "multiply". La deuxième entrée est un nombre qui sera utilisé dans l'opération.

Lisez les deux entrées et créez un bloc try...catch...finally. À l'intérieur du bloc try, vérifiez le type d'opération :

  • Si l'opération est "divide", vérifiez si le nombre est zéro. S'il est nul, lancez une nouvelle Exception avec le message "Cannot divide by zero". Si le nombre n'est pas nul, calculez 100 divisé par le nombre et affichez "Result: " suivi du résultat.
  • Si l'opération est "multiply", calculez 100 multiplié par le nombre et affichez "Result: " suivi du résultat.

Dans le bloc catch, gérez toute exception en affichant "Error: " suivi du message de l'exception en utilisant la méthode getMessage().

Dans le bloc finally, affichez "Operation completed".

Format d'entrée :

  • Première ligne : Une chaîne de caractères représentant le type d'opération (soit divide soit multiply)
  • Deuxième ligne : Un nombre (exemple : 5 ou 0 ou 2.5)

Résultat attendu :

  • Si l'opération réussit : Result: suivi de la valeur calculée, puis Operation completed sur une nouvelle ligne
  • Si une division par zéro se produit : Error: Cannot divide by zero, puis Operation completed sur une nouvelle ligne

Aide-mémoire

Le bloc finally contient du code qui s'exécute toujours après la fin d'un bloc try...catch, qu'une exception se produise ou non. Il est parfait pour les opérations de nettoyage comme la fermeture de fichiers ou de connexions à une base de données.

Le bloc finally s'exécute dans tous les scénarios :

  • Lorsque le bloc try réussit sans exceptions
  • Lorsqu'une exception est levée et capturée
  • Lorsqu'une exception est levée mais n'est pas capturée
<?php
try {
    echo "Attempting operation...\n";
    // Code qui pourrait lever une exception
} catch (Exception $e) {
    echo "Error: " . $e->getMessage() . "\n";
} finally {
    echo "Cleanup completed.\n";
}
?>

Le bloc finally s'exécute après que les blocs try et catch se sont terminés, garantissant que le code de nettoyage essentiel s'exécute toujours.

Essayez vous-même

<?php
// Lire les entrées
$operation = trim(fgets(STDIN));
$number = floatval(fgets(STDIN));

// TODO : Écrivez votre code ci-dessous
// Créer un bloc try...catch...finally pour gérer l'opération

?>
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux