Gérer les erreurs et les exceptions PHP

Cet article décrit comment gérer les erreurs et les exceptions PHP.

Prérequis

Gérer les erreurs PHP

Constantes pré-définies

E_ERROR (1), E_WARNING (2), E_PARSE (4), E_NOTICE (8), E_CORE_ERROR (16), E_CORE_WARNING (32), E_COMPILE_ERROR (64), E_COMPILE_WARNING (128), E_USER_ERROR (256), E_USER_WARNING (512), E_USER_NOTICE (1024), E_STRICT (2048), E_RECOVERABLE_ERROR (4096), E_DEPRECATED (8192), E_USER_DEPRECATED (16384), E_ALL (32767).

Plus d’informations sur http://php.net/manual/fr/errorfunc.constants.php

Afficher les erreurs PHP

La fonction ini_set permet d’activer l’affichage des erreurs PHP.

ini_set('display_errors', 'On');

Définir le niveau de rapport des erreurs PHP

La fonction error_reporting permet de choisir les erreurs PHP à afficher.

Exemples :

// Affiche les erreurs E_ERROR, E_PARSE et E_USER_ERROR
error_reporting(E_ERROR | E_PARSE | E_USER_ERROR);

// Affiche toutes les erreurs sauf E_WARNING et E_NOTICE
error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE);

// Affiche toutes les erreurs
error_reporting(E_ALL);

// N'affiche aucune erreur
error_reporting(0);

Personnaliser la gestion des erreurs PHP

La fonction set_error_handler permet de choisir la fonction qui gère les erreurs PHP.

set_error_handler('HandleError');

// Affiche toutes les erreurs sauf E_WARNING et E_NOTICE
function HandleError($Number, $Message, $File, $Line) {
    $ExceptionsArray = array(E_WARNING, E_NOTICE);
    if (!in_array($Number, $ExceptionsArray)) {
        $Message = '<b>Error</b>: '.$Message.' in <b>'.$File.'</b> on line <b>'.$Line.'</b>';
        exit($Message);
    }
}

L’utilisation de la fonction set_error_handler annule le niveau de rapport des erreurs définit avec la fonction error_reporting.

Les erreurs E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING et E_STRICT ne sont pas gérées par la fonction passée en paramètre de set_error_handler.

Déclencher une erreur PHP

La fonction trigger_error permet de déclencher une erreur personnalisée.

trigger_error('Ceci est une erreur E_USER_WARNING', E_USER_WARNING);

Gérer les exceptions PHP

La fonction set_exception_handler permet de choisir la fonction qui gère les exceptions PHP.

set_exception_handler('HandleError');

// Affiche les exceptions
function HandleException($Exception) {
    $Message = '<b>Exception</b>: '.$Exception->getMessage().' in <b>'.$Exception->getFile().'</b> on line <b>'.$Exception->getLine().'</b>';
    exit($Message);
}

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*