Maison  >  Article  >  développement back-end  >  Gestion des erreurs personnalisées PHP

Gestion des erreurs personnalisées PHP

小云云
小云云original
2017-11-15 16:33:282114parcourir

Normalement, PHP affichera directement l'erreur fatale et affichera la source de l'erreur (adresse du fichier, numéro de ligne) et la raison, etc., afin que les développeurs puissent facilement localiser le problème. Mais parfois, ces informations peuvent ne pas être affichées en raison de paramètres php.ini ou de problèmes de configuration de framework tiers. À ce stade, vous devez apprendre à définir vous-même les paramètres pertinents et à afficher ces messages d'erreur pour vous aider à localiser rapidement le problème.

error_reporting est un paramètre de configuration global php dans php.ini. Utilisé pour configurer le niveau de sortie d’erreur et peut être utilisé pour définir le niveau de sortie d’erreur.

error_reporting(int $level), lorsque $level est 0, la sortie d'erreur est désactivée, c'est-à-dire qu'aucune erreur ne sera générée.

set_error_handler

la gestion des erreurs par défaut de php consiste à afficher le message. Cependant, vous devez parfois définir d'autres opérations, auquel cas vous devez personnaliser la fonction de gestion des erreurs.

php fournit la fonction intégrée set_error_handler pour nous aider à enregistrer nos propres fonctions de gestion des erreurs. Le prototype de la fonction est le suivant :

mixed set_error_handler ( callback $error_handler [, int $error_types = E_ALL | E_STRICT ] )

Il est à noter que même si la fonction de gestion des erreurs est enregistrée, le comportement par défaut sera toujours Lors de l'exécution, c'est-à-dire que lorsqu'une erreur se produit, le message d'erreur sera toujours affiché, vous devez donc définir explicitement le niveau d'erreur sur 0 dans le programme, puis enregistrer votre propre fonction de gestion des erreurs. Cette approche est particulièrement importante dans un environnement de production, car même en cas de problème, les informations sensibles sur les erreurs internes ne seront pas exposées aux utilisateurs potentiellement malveillants. Il est également important de souligner que les fonctions personnalisées de gestion des erreurs ne peuvent pas gérer les erreurs fatales (telles que les erreurs de compilation).

Ce qui suit est un exemple d'utilisation d'une fonction de gestion des erreurs personnalisée :

<?php
error_reporting(0);
function error_handler($error_level, $error_message, $file, $line) {
    $exit = false;
    switch ($error_level) {
        case E_NOTICE:
        case E_USER_NOTICE:
            $error_type = &#39;Notice&#39;;
            break;
        case E_WARNING:
        case E_USER_WARNING:
            $error_type = &#39;Warning&#39;;
            break;
        case E_ERROR:
        case E_USER_ERROR:
            $error_type = &#39;Fatal Error&#39;;
            $exit = true;
            break;
        default:
            $error_type = &#39;Unknown&#39;;
            $exit = true;
            break;
    }
    printf("%s: %s in %s on line %d\n", $error_type, $error_message, $file, $line);
    if ($exit) {
        die();
    }
}
set_error_handler(&#39;error_handler&#39;);

echo $novar;
echo 3 / 0;
trigger_error('Déclencher une erreur fatale ' , E_USER_ERROR);
new NonExist();

L'exécution de ce script obtiendra le résultat suivant :

Avis : Variable non définie : novar dans /your/php_demo_file.php à la ligne 40

Attention : Division par zéro dans /votre/php_demo_file.php à la ligne 41

Erreur fatale : Déclenchez une erreur fatale dans /votre/php_demo_file.php à la ligne 42

D'accord. Vous voyez, la dernière exception "new NoExistClass()" n'a pas été interceptée par la fonction de gestion des erreurs personnalisée.

Enfin, en passant, set_exception_handler enregistre la gestion des exceptions de niveau supérieur dans les applications Web, vous pouvez le définir, puis accéder uniformément à la page de gestion des erreurs.

Ce qui précède est un cas de gestion des erreurs personnalisée PHP, j'espère que cela pourra aider tout le monde.

Recommandations associées :

Un cas de fonction personnalisée php implémentant la fonction de comparaison de tableaux

Exemple de code constant php personnalisé/système/classe détaillé explication

Explication détaillée des exemples de code constant php personnalisé/système/classe

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn