Maison >développement back-end >Problème PHP >Comment personnaliser les invites d'erreur en php

Comment personnaliser les invites d'erreur en php

藏色散人
藏色散人original
2021-06-02 15:38:281555parcourir

En PHP, vous pouvez personnaliser la gestion des erreurs via la fonction "set_error_handler()". La fonction de cette fonction est de spécifier une autre fonction comme fonction de gestion des erreurs. La syntaxe est telle que "set_error_handler(callable $error_handler). ...)".

Comment personnaliser les invites d'erreur en php

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3

Comment personnaliser les invites d'erreur en php ?

PHP set_error_handler() : Fonction de gestion des erreurs personnalisée

PHP fournit une fonction set_error_handler(), qui peut être utilisée pour spécifier une autre fonction comme fonction de gestion des erreurs. La syntaxe. est la suivante :

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

Description du paramètre

1) $error_handler est un nom de fonction défini par l'utilisateur. En plus du nom de la fonction, vous pouvez également transmettre NULL pour réinitialiser le gestionnaire. état par défaut. Vous pouvez également transmettre un tableau d'objets de référence et de noms de méthodes d'objet.

Le format de la fonction définie par l'utilisateur est le suivant :

error_handler(int $errno , string $errstr [, string $errfile [, int $errline [, array $errcontext ]]])

où :

Le premier paramètre $errno représente le niveau d'erreur et est de type entier

Le deuxième paramètre $errstr représente les informations d'erreur, qui est un type de chaîne

Le troisième paramètre $errfile est un paramètre facultatif, qui représente le nom du fichier où l'erreur s'est produite, et est une chaîne ; type;

Le quatrième paramètre $errline est également un paramètre facultatif, indiquant le numéro de ligne où l'erreur s'est produite, et est un type entier

Le cinquième paramètre $errcontext est également un paramètre facultatif ; (obsolète dans PHP7.2.0 ultérieurement), représente un tableau de tables de symboles actives lorsque l'erreur s'est produite. C'est-à-dire que $errcontext contiendra un tableau de toutes les variables dans la portée où l'erreur a été déclenchée. Le gestionnaire d'erreurs de l'utilisateur ne doit pas modifier le contexte d'erreur.

Remarque : Si la fonction set_error_handler() renvoie FALSE, le gestionnaire d'erreurs standard continuera à être appelé.

2) Le paramètre $error_types est tout comme le error_reporting du fichier de configuration php.ini qui permet de contrôler l'affichage des erreurs. Ce paramètre peut être utilisé pour bloquer le déclenchement de $error_handler. Sans ce masque, $error_handler sera appelé à chaque erreur, quelle que soit la manière dont $error_reporting est défini.

Si un gestionnaire d'erreurs a été défini auparavant, le nom du programme est renvoyé ; s'il s'agit d'un gestionnaire d'erreurs intégré, NULL est renvoyé. Si une fonction de rappel non valide est spécifiée, NULL sera également renvoyé. Si le gestionnaire d'erreurs précédent était une méthode de classe, cette fonction renvoie un tableau indexé avec les noms de classe et de méthode.

[Exemple] Personnalisez une fonction de gestion des erreurs et utilisez-la pour gérer les erreurs dans le programme.

<?php
    function error_handler($errno, $errstr, $errfile, $errline ) {
        echo "error number:".$errno."<br/>";
        echo "error msg:".$errstr."<br/>";
        echo "error file:".$errfile."<br/>";
        echo "error line:".$errline."<br/>";
        die(&#39;something error&#39;);
    }
    set_error_handler("error_handler");
    strpos();
?>

Les résultats d'exécution sont les suivants :

error number:2
error msg:strpos() expects at least 2 parameters, 0 given
error file:D:\WWW\index.php
error line:10
something error

Remarque : utilisez cette méthode pour la gestion des erreurs. Si l'exécution du programme n'est pas terminée dans la fonction de gestion des erreurs, le programme continuera. exécutez la ligne suivante où l'erreur s'est produite, la fonction die() doit donc être utilisée pour terminer le programme.

Il convient également de noter que cette méthode de gestion des erreurs ne peut pas prendre en charge tous les niveaux d'erreurs du programme. Les erreurs dans les parties E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING et E_STRICT seront affichées dans leur forme originale. sortir.

set_error_handler() Advanced

Le mécanisme de gestion des exceptions de PHP n'est pas parfait et ne peut pas lancer automatiquement d'exceptions. Les utilisateurs peuvent également utiliser set_error_handler() pour traiter les exceptions comme des erreurs, afin que les utilisateurs puissent utiliser des fonctions de gestion des erreurs personnalisées. pour détecter automatiquement les exceptions.

[Exemple] Utilisez une fonction de gestion des erreurs personnalisée pour intercepter automatiquement les exceptions.

<?php
    function error_handler($errno, $errstr, $errfile, $errline ) {
        echo "error number:".$errno."<br/>";
        echo "error msg:".$errstr."<br/>";
        echo "error file:".$errfile."<br/>";
        echo "error line:".$errline."<br/>";
        die(&#39;something error&#39;);
    }
    set_error_handler("error_handler");
    /* 触发异常 */
    try {
        $a = 5/0;
        echo $a;
    } catch(Exception $e) {
        echo $e->getMessage();
    }
?>

Les résultats d'exécution sont les suivants :

error number:2
error msg:Division by zero
error file:D:\WWW\index.php
error line:12
something error

Lorsque le programme s'exécute avec l'instruction $a = 5/0 à la ligne 12, le programme interceptera automatiquement cette exception et utilisera l'utilisateur. -fonction définie pour le traitement.

Apprentissage recommandé : "

Tutoriel vidéo PHP"

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