Médiaforma

PHP MySQL – Exceptions

Print Friendly

La gestion des exceptions dans PHP est comparable à celle qui a cours dans les autres langages de programmation :

  • Le code qui peut provoquer une exception doit être entouré d’une structure try.
  • Une exception peut être déclenchée par l’instruction suivante :
     throw new Exception("message");
  • L’instruction catch(exception $e) permet de capturer une exception. Si une instruction throw new Exception a été générée, le message peut être récupéré dans la cellule
     $e->getMessage() du tableau $e.
  • Chaque instruction try doit avoir une instruction catch correspondante.

Un exemple va mettre en pratique tout ce qui vient d’être dit :

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Gestion des exceptions</title>
  </head>
  <body>
    <?php
      function inverse($nombre){
        if ($nombre == 0)
          throw new exception("division par zéro");
        else
          echo "1/$nombre = ".(1/$nombre)."<br>";
      }
      try{
        echo inverse(12);
        echo inverse(0);
        echo inverse(3);
      }
      catch(exception $e){
        echo "Une exception a été générée : ".$e->getMessage()."<br>";
      }
    ?>
  </body>
</html>

Faites une pause dans la vidéo et saisissez ce code le code.

Voici quelques explications sur le code que vous venez de saisir.

Les instructions dont l’exécution est incertaine sont placées dans le bloc try. Ici, on essaye de calculer 1/12, 1/0 puis 1/3

 

Examinons la fonction inverse.

Si le nombre passé en entrée est égal à 0, l’exception « Division par zéro » est générée.

Dans le cas contraire, l’inverse du nombre passé à la fonction est retourné.

Lorsqu’une exception se produit, les instructions du bloc catch sont exécutées puis le programme s’interrompt.

Exécutons ce code via WAMPServer.

Comme vous pouvez le vérifier :

  • la première fraction est calculée
  • la deuxième fraction provoque l’affichage d’un message d’erreur
  • la troisième fraction n’est jamais exécutée car le programme a été interrompu.
Vous avez aimé cet article ? Partagez-le avec vos réseaux...
 
Comments

No comments yet.

Leave a Reply