Classe d'exceptions et de gestions d'erreurs php5

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

    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.