Maison  >  Article  >  développement back-end  >  Savez-vous comment personnaliser les fonctions de gestion des erreurs et le masquage des erreurs en PHP ?

Savez-vous comment personnaliser les fonctions de gestion des erreurs et le masquage des erreurs en PHP ?

WBOY
WBOYoriginal
2021-10-21 17:57:382542parcourir

Dans l'article précédent, je vous ai présenté "Vous faire comprendre les types d'erreur et les niveaux d'erreur de PHP", qui présentait en détail les types d'erreur et les niveaux d'erreur en PHP. Jetons un coup d'œil à cet article. gestion des erreurs et comment bloquer les erreurs en PHP, j'espère que cela sera utile à tout le monde !

Savez-vous comment personnaliser les fonctions de gestion des erreurs et le masquage des erreurs en PHP ?

Dans notre développement quotidien, il est inévitable de rencontrer des erreurs. Parfois, nous pouvons spécifier une fonction comme fonction de gestion des erreurs. Il existe une fonction de gestion des erreurs personnalisée en PHP.

<strong><span style="font-size: 20px;">set_error_handler() </span></strong>Fonction de gestion des erreurs personnalisée<strong><span style="font-size: 20px;">set_error_handler() </span></strong>函数自定义错误处理函数

PHP中提供了set_error_handler()函数就是用来指定一个函数作为错误处理函数,它的语法格式如下:

set_error_handler(自定义函数名 [, int $error_types = E_ALL | E_STRICT ])

其中自定义函数名这个自定义函数的语法格式如下:

error_handler(int 错误的级别 , string 错误的信息 [, string 发生错误的文件名 [, int 发生错误的行号 ]])

之前如果有过定义的错误处理程序,返回的就是改程序的程序名称;如果是内置的错误处理程序,返回的结果是NULL。若是指定了一个无效的回调函数,同样会返回NULL。

接下来我们通过示例来看一下,自定义一个错误处理函数,并使用它来处理程序中的错误,示例如下:

<?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();
?>

输出结果:

Savez-vous comment personnaliser les fonctions de gestion des erreurs et le masquage des erreurs en PHP ?

我们在使用此函数时需要注意的是,只用这种方式来进行错误处理,若是函数没有错误的话,或者说程序没有在错误的函数中运行,程序会继续往下执行发生错误的函数语句,因此我们需要使用die()函数来终止函数的运行。

在我们的日常开发中,程序中的异常无法自动抛出来,这时候我们也可以使用set_error_handler() 自定义,将异常当作错误来处理,这样我们就可以使用自定义错误处理来自动捕捉异常。

示例如下:

<?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();
    }
?>

输出结果:

Savez-vous comment personnaliser les fonctions de gestion des erreurs et le masquage des erreurs en PHP ?

错误屏蔽

在PHP开发过程中,我们不仅可以通过set_error_handler()自定义错误处理函数来处理错误,我们还能够把错误屏蔽掉,在有些情况下,错误屏蔽也是必不可少的。那接下来给大家列举一些用于错误屏蔽的方法。

  • <span style="font-size: 16px;"><strong>@</strong></span>---错误控制运算符

在PHP中,将错误控制运算符@,放在一个表达式的前面,那这个表达式中可能存在的错误都会被屏蔽掉。

其中关于@的使用,我们需要注意的是:@运算符只有放在表达式的前面才会生效,例如变量、函数、常量等等的前面可以使用@运算符,绝对不能放在函数的或者类的定义之前,也不能够放在条件结构语句的前面。

示例如下:

<?php
    $link = @mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db") or die(&#39;数据库连接失败!&#39;);
?>

输出结果:

Savez-vous comment personnaliser les fonctions de gestion des erreurs et le masquage des erreurs en PHP ?

在上述示例中,看得出通过@错误控制运算符,在表达式前能够屏蔽表达式。

  • 使用 error_reporting() 函数屏蔽错误

PHP 中有很多的错误级别,使用 error_reporting() 函数可以设置 PHP 会报告何种错误,函数的语法格式如下:

error_reporting(设置错误级别)

关于错误级别在上一篇文章《带你一起了解PHP的错误类型和错误级别》中有更详细的介绍,接下来我们通过示例来看一下函数的使用:

<?php
    error_reporting(0);
    $link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db") or die(&#39;数据库连接失败!&#39;);
?>

输出结果:

Savez-vous comment personnaliser les fonctions de gestion des erreurs et le masquage des erreurs en PHP ?

  • 通过 display_errors 参数屏蔽错误

这种方法时最彻底的一种方法,前面两种方法只作用于单行或者单个文件,但是通过display_errors 参数屏蔽错误是作用在所有的PHP文件,那我们一起来看一下应该怎么操作吧。

首先我们需要打开php.ini

PHP fournit la fonction set_error_handler(), qui est utilisée pour spécifier une fonction comme fonction de gestion des erreurs. Son format de syntaxe est le suivant : 🎜rrreee🎜 Parmi eux , la fonction personnalisée Le format de syntaxe de cette fonction personnalisée est le suivant : 🎜rrreee🎜S'il y a eu un gestionnaire d'erreurs défini auparavant, le nom du programme renvoyé est le nom du programme modifié s'il s'agit d'un gestionnaire d'erreurs intégré ; , le résultat renvoyé est NULL. Si une fonction de rappel non valide est spécifiée, NULL sera également renvoyé.
🎜🎜Ensuite, jetons un coup d'œil à un exemple, personnalisons une fonction de gestion des erreurs et utilisons-la pour gérer les erreurs dans le programme. L'exemple est le suivant :
🎜rrreee🎜Résultat de sortie :🎜 🎜Savez-vous comment personnaliser les fonctions de gestion des erreurs et le masquage des erreurs en PHP ?🎜 🎜Nous sommes là Ce qu'il faut noter lors de l'utilisation de cette fonction, c'est que la gestion des erreurs se fait uniquement de cette manière. S'il n'y a pas d'erreur dans la fonction, ou si le programme ne s'exécute pas dans la mauvaise fonction, le programme continuera à s'exécuter. l'instruction de fonction où l'erreur s'est produite, donc nous La fonction die() doit être utilisée pour terminer la fonction.
🎜🎜Dans notre développement quotidien, les exceptions du programme ne peuvent pas être levées automatiquement. À l'heure actuelle, nous pouvons également utiliser set_error_handler() pour personnaliser et gérer les exceptions comme des erreurs, afin que nous puissions utiliser la gestion des erreurs personnalisées pour détecter automatiquement. exceptions. 🎜🎜L'exemple est le suivant : 🎜rrreee🎜Résultat de sortie :
🎜🎜Savez-vous comment personnaliser les fonctions de gestion des erreurs et le masquage des erreurs en PHP ?🎜🎜Protection contre les erreurs🎜🎜Dans le processus de développement PHP , nous pouvons non seulement personnaliser la fonction de gestion des erreurs via set_error_handler() pour gérer les erreurs, mais également masquer les erreurs. Dans certains cas, le masquage des erreurs est également essentiel. Ensuite, je vais énumérer quelques méthodes de protection contre les erreurs. 🎜
  • 🎜<span style="font-size: 16px;"><strong>@</strong></span> code>---Opérateur de contrôle des erreurs🎜
🎜En PHP, contrôlez les erreurs Si l'opérateur @ est placé devant une expression, les erreurs pouvant exister dans l'expression seront masquées.
🎜🎜 Concernant l'utilisation de @, il faut noter que l'opérateur @ ne prendra effet que lorsqu'il est placé devant une expression. Par exemple, l'opérateur @ peut être utilisé devant des variables, des fonctions, des constantes, etc., mais il ne doit pas être utilisé. Il ne peut pas être placé avant la définition d'une fonction ou d'une classe, ni avant une instruction de structure conditionnelle. 🎜🎜L'exemple est le suivant :
🎜rrreee🎜Résultat de sortie :
🎜🎜Savez-vous comment personnaliser les fonctions de gestion des erreurs et le masquage des erreurs en PHP ?🎜🎜Dans l'exemple ci-dessus, on peut voir que l'expression peut être masquée avant l'expression via l'opérateur de contrôle @error. 🎜
  • 🎜Utilisez la fonction error_reporting() pour masquer les erreurs 🎜
🎜Il existe de nombreux niveaux d'erreur en PHP Vous pouvez utiliser la fonction error_reporting() pour définir le type d'erreurs que PHP signalera. la fonction est la suivante : 🎜rrreee🎜À propos Le niveau d'erreur est présenté plus en détail dans l'article précédent "🎜Vous amène à comprendre les types d'erreur et les niveaux d'erreur de PHP🎜". fonction à travers un exemple :
🎜rrreee🎜Résultats de sortie :
🎜🎜Savez-vous comment personnaliser les fonctions de gestion des erreurs et le masquage des erreurs en PHP ?
🎜
  • 🎜Pardisplay_errors Erreurs de masquage des paramètres🎜
🎜Cette méthode est la plus complète. Les deux premières méthodes ne fonctionnent que sur une seule ligne ou un seul fichier, mais ils sont masqués par le paramètre display_errors L'erreur affecte tous les fichiers PHP, voyons donc ce qu'il faut faire. 🎜🎜Nous devons d'abord ouvrir le fichier de configuration php.ini, puis rechercher display_errors et définir sa valeur sur Off pour désactiver tous les rapports d'erreurs PHP. 🎜

(L'article précédent "Comment télécharger des fichiers en PHP ? Vous comprendrez après l'avoir lu ! " a présenté les connaissances pertinentes sur la façon de supprimer les fichiers de configuration php et ini)

L'exemple est le suivant :

Savez-vous comment personnaliser les fonctions de gestion des erreurs et le masquage des erreurs en PHP ?

De cette façon, vous pouvez bloquer Wrong.

Si vous êtes intéressé, vous pouvez cliquer sur "Tutoriel vidéo PHP" pour en savoir plus sur les connaissances 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