Classe d'exceptions et de gestions d'erreurs php5

Soyez le premier à donner votre avis sur cette source.

Vue 4 652 fois - Téléchargée 328 fois

Description

Tout est dans la source et dans le zip.

Source / Exemple :


<?php
/**

  • Classe d'exception
  • Cette classe complete legerement la classe d'exception de PHP,
  • elle peut egalement etre utiliser pour gerer (presque) toutes les erreurs
  • par l'intermediaire de la fonction error_handler().
  • <code>
  • <?php
  • try
  • {
  • throw new MyException("Erreur de configuration");
  • }
  • catch (MyException $e)
  • {
  • echo $e->getSummary();
  • }
  • //avec le gestionnaire d'erreur active
  • set_error_handler("error_handler");
  • try
  • {
  • $handle = fopen("fichier.txt");
  • }
  • catch (MyException $e)
  • {
  • echo $e->getSummary();
  • }
  • ?>
  • @author Gorrk
  • /

  • class MyException extends Exception
    {
    /**
    • Niveau de l'erreur
    • @var integer
    • /

    protected $level = 0;

    /**
    • Code de l'erreur
    • @var integer
    • /

    protected $code = 0;

    /**
    • Description de l'erreur
    • @var string
    • /

    protected $message;

    /**
    • Fichier ou a eu lieu l'erreur
    • @var string
    • /

    protected $file;

    /**
    • Ligne ou a eu lieu l'erreur
    • @var integer
    • /

    protected $line;

    /**
    • Construit l'objet MyException
    • @param string $message description de l'erreur
    • @return void
    • /

    public function __construct()
    {
    switch (func_num_args())
    {
    case 4 : parent::__construct(func_get_arg(1));
    $this->level = (integer) func_get_arg(0);
    $this->file = (string) func_get_arg(2);
    $this->line = (integer) func_get_arg(3);
    break;
    case 2 : parent::__construct(func_get_arg(0));
    $this->code = (integer) func_get_arg(1);
    break;
    case 1 : parent::__construct(func_get_arg(0));
    }
    }

    /**
    • Retourne le niveau de l'erreur
    • @return integer
    • /

    function getLevel()
    {
    return $this->level;
    }

    /**
    • Retourne le niveau de l'erreur sous forme de chaine
    • @return string
    • /

    function getLevelAsString()
    {
    switch ($this->level)
    {
    case E_ERROR : return "E_ERROR";
    case E_WARNING : return "E_WARNING";
    case E_PARSE : return "E_PARSE";
    case E_NOTICE : return "E_NOTICE";
    case E_CORE_ERROR : return "E_CORE_ERROR";
    case E_CORE_WARNING : return "E_CORE_WARNING";
    case E_COMPILE_ERROR : return "E_COMPILE_ERROR";
    case E_COMPILE_WARNING : return "E_COMPILE_WARNING";
    case E_USER_ERROR : return "E_USER_ERROR";
    case E_USER_WARNING : return "E_USER_WARNING";
    case E_USER_NOTICE : return "E_USER_NOTICE";
    case E_ALL : return "E_ALL";
    case E_STRICT : return "E_STRICT";
    }
    }

    /**
    • Retourne un resume de l'erreur
    • @return string
    • /

    public function getSummary()
    {
    $string = "<br />\r\n";
    $string .= "<strong>Attention</strong> : ".$this->message.".<br />\r\n";
    $string .= "Dans le fichier <strong>".$this->file."</strong> à la ligne <strong>".$this->line."</strong>.<br />\r\n";
    $string .= "<br />\r\n";
    return $string;
    }
    }

    /**
    • Active MyException a chaque erreur
    • @author Gorrk
    • @return void
    • /

    function error_handler($level, $message, $file, $line)
    {
    throw new MyException($level, $message, $file, $line);
    }

    /**
    • Active le gestionnaire d'erreurs
    • /

    set_error_handler("error_handler");

    /**
    • Affiche un message d'erreur a chaque Exception non rattrapee et arrete le script
    • @author Gorrk
    • @return void
    • /

    function exception_handler($exception)
    {
    die($exception->getSummary());
    }
    /**
    • Active le le gestionnaire d'exception
    • /

    set_exception_handler("exception_handler");
    ?>
    </code>

    Codes Sources

    A voir également

    Ajouter un commentaire

    Commentaires

    cs_Antidote
    Messages postés
    163
    Date d'inscription
    lundi 29 septembre 2003
    Statut
    Membre
    Dernière intervention
    8 mai 2010
    -
    Merci pour le liens, très sympa !
    Gorrk
    Messages postés
    97
    Date d'inscription
    mercredi 16 avril 2003
    Statut
    Membre
    Dernière intervention
    26 avril 2007
    -
    Ma source est inspiree d'un super site le principe des exceptions et le fonctionnements est très bien expliquer.

    http://classes.scriptsphp.net:81/article.PHP-5-et-les-exceptions
    cs_Antidote
    Messages postés
    163
    Date d'inscription
    lundi 29 septembre 2003
    Statut
    Membre
    Dernière intervention
    8 mai 2010
    -
    La j'avoue que je suis perdu.

    Depuis que j'ai trouvé un job de dévelloppeur en php je n'ai pas trop pu me mettre à jour sur php5.

    Hors jusqu'à maintnenant j'étais pas mal callé dessus mais là, je suis perdu.

    Try ? catch ? throw ? j'avais jamais vu ça.
    J'ai chercher dans la doc je trouve rien la dessus. Ça m'intéresse plus qu'énormément. Si tu peux m'éclairer liens ou autres je prend.

    J'avais dévelloper mon propre gestionnaire d'erreur, pour un site d'ecommerce.
    Je met en garde ceux qui voudrais s'y mettre, Si votre gestionnaire d'erreur à lui meme un erreur, attention au boucle inifinie. Le miens m'envoyait un mail. J'ai été surpris de retrouve 5 000 mails dans ma boite après le premier test.
    Gorrk
    Messages postés
    97
    Date d'inscription
    mercredi 16 avril 2003
    Statut
    Membre
    Dernière intervention
    26 avril 2007
    -
    c bon pour le zip, il contient une documentation, enfin une documentation, c un grand mot...

    :p lol
    Gorrk
    Messages postés
    97
    Date d'inscription
    mercredi 16 avril 2003
    Statut
    Membre
    Dernière intervention
    26 avril 2007
    -
    Désolé pour le Zip, mais g eu un probleme lors du postage de la source, et le zip n'est pas passer, je le mettrai plus tard, il ne vous manquera pas, tout est dans la source.

    Vous n'êtes pas encore membre ?

    inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

    Les membres obtiennent plus de réponses que les utilisateurs anonymes.

    Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

    Le fait d'être membre vous permet d'avoir des options supplémentaires.