Alerte

Avec PHP5, une nouvelle classe a fait son apparition pour ravir les fanatique du développement orienté objet, il s’agit de la classe : Exception.

Cette classe permet d’éviter une gestion des erreurs plus que moyenne avec les die().

Dans ce billet, nous allons voir comment utiliser ces exceptions, soulever une exception, afficher les exceptions et créer sa propre classe d’exception.

Introduction

Une exception est un message d’erreur que peut générer un script suivant une condition.

Soulever une exception

Pour soulever une exception, nous allons créer un classe simple avec une condition qui généra une exception.

class User{
    public function __construct($id){
        if($id < 10){
        // Si $id est inférieur à 10, on lève une exception.
            throw new Exception("id doit être inférieur à 10");
        }
    }
}

Avec ce code la on lève une exception mais non formatée du type :

Fatal error: Uncaught exception 'Exception' with message 'id doit être inférieur à 10'

Ce qui n'est pas vraiment pratique, non ?

Le block Try Catch

Comme en Java, il exite en PHP le block try catch qui permet d'attraper les exceptions qui sont soulevées lors de l'exécution du script.

Si on reprend la classe précédente :

try{ // On test le code
    $user = new User(1); // On soulève une erreur
}catch(Exception $e){ // Si une erreur est soulevée
    echo $e->getMessage(); // on affiche le message de l'erreur
}

Pratique non ? Vous avez vu que, dans l’exemple précédent, j’ai utiliser une méthode nommée getMessage qui permet d’afficher le message d’erreur.
Mais il existe 5 autres méthodes dans la classe Exception :

  • getCode() : Affiche le code d’erreur
  • getFile() : Affiche le fichier qui a levé l’exception
  • getLine() : Affiche la ligne où c’est produite l’erreur
  • getMessage() : Affiche le message d’erreur
  • getTrace(): Retourne un tableau avec les informations de l’erreur (fichier,ligne,fonction,classe,type)
  • getTraceAsString() : Retourne les mêmes résultats que précédent mais sous forme d’une chaine.

Personnalisation des erreurs

Utiliser la classe d’erreur de PHP est plutôt pratique mais créer ses propres exceptions peut être très pratique si vous développez une grosse application.

Pour créer votre classe personnelle d’erreur il faut faire comme cela :

class MyException extends Exception{
    public function __construct($message){
        parent::__construct($message); // On appelle le constructeur de la classe Exception
        // On peut avoir accès à toutes les méthodes vu plus haut
    }
}

Ensuite nous pouvons ajouter des styles au erreurs en ajoutant une méthode dans notre classe avec les méthodes de la classe parente.

Ce billet a (j’espère) permis de vous éclaircir les idées sur cette notion de gestion d’erreur avec PHP