Formation PUB010 : PHP, 2025 Notions de programmation appliquées au PHP (référence)

56.10 try... catch


A l’origine de toute erreur attribuée à l’ordinateur, vous trouverez au moins deux erreurs humaines. Dont celle consistant à attribuer l’erreur à l’ordinateur.Anonymehttp://pise.info/algo/variables.htm

Il est possible d'utiliser la structure try... catch pour gérer les erreurs en PHP.

Cependant, il faut savoir que plusieurs fonctions internes de PHP ne lèvent pas d'exception. Elles utilisent plutôt un mécanisme de report d'erreurs interne.

Lorsqu'une fonction lève une exception, il est possible d'intercepter ces types dans un catch :

  • Error : les exceptions gérées par un mécanisme interne
  • Exception : les exceptions qui sont levées par une fonction à l'aide de l'instruction throw
  • Throwable : cette interface est implémentée à la fois par Error et par Exception
  • Toute autre classe dérivée de Error ou de Exception (ex : DivisionByZeroError, TypeError, ParseError)
  • Il est également possible de travailler avec nos propres classes dérivées de Exception.

Afin de récupérer tous les types d'erreur, le code pourra prendre la structure suivante :

PHP

try {
    ...
} catch (Throwable $e) {
    ...
}

Ex :

PHP

try {
    $resultat = $numerateur / $denominateur;
    echo "Le résultat est $resultat";
} catch (Throwable $e) {
    $type = get_class($e);
    log_debug("Une erreur de type $type a été interceptée.");
    echo "Impossible d'effectuer ce calcul.";
}

Dans cet exemple, si on entre la valeur 0 comme dénominateur, le message suivant sera enregistré dans le fichier journal : « Une erreur de type DivisionByZeroError a été interceptée. ».

Il est aussi possible de réagir différemment selon le type d'erreur :

PHP

try {
    ...
} catch (Error $e) {
    ...
} catch (MonException $e) {
    ...
} catch (Exception $e) {
    ...
} catch (Throwable $e) {
    ...
}

 

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre