Heim > Artikel > Backend-Entwicklung > Wissen Sie, wie Sie Fehlerbehandlungsfunktionen und Fehlermaskierung in PHP anpassen können?
Im vorherigen Artikel habe ich Ihnen „Erklären Sie die Fehlertypen und Fehlerstufen von PHP“ vorgestellt, in dem die Fehlertypen und Fehlerstufen in PHP ausführlich vorgestellt wurden Fehlerbehandlung und das Blockieren von Fehlern in PHP, ich hoffe, es wird für alle hilfreich sein!
<strong><span style="font-size: 20px;">set_error_handler() </span></strong>
Benutzerdefinierte Funktion zur Fehlerbehandlung<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('something error'); } set_error_handler("error_handler"); strpos(); ?>
输出结果:
我们在使用此函数时需要注意的是,只用这种方式来进行错误处理,若是函数没有错误的话,或者说程序没有在错误的函数中运行,程序会继续往下执行发生错误的函数语句,因此我们需要使用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('something error'); } set_error_handler("error_handler"); /* 触发异常 */ try { $a = 5/0;//程序会自动捕捉这个异常,并且由自定义函数来处理 echo $a; } catch(Exception $e) { echo $e->getMessage(); } ?>
输出结果:
错误屏蔽
在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('数据库连接失败!'); ?>
输出结果:
在上述示例中,看得出通过@错误控制运算符,在表达式前能够屏蔽表达式。
使用 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('数据库连接失败!'); ?>
输出结果:
通过 display_errors
参数屏蔽错误
这种方法时最彻底的一种方法,前面两种方法只作用于单行或者单个文件,但是通过display_errors 参数屏蔽错误是作用在所有的PHP文件,那我们一起来看一下应该怎么操作吧。
首先我们需要打开php.ini
PHP stellt die Funktion set_error_handler() bereit, mit der eine Funktion als Fehlerbehandlungsfunktion angegeben wird. Das Syntaxformat lautet wie folgt:
<span style="font-size: 16px;"><strong>@</strong></span> Code>---Fehlerkontrolloperator🎜
error_reporting()
, um Fehler maskieren 🎜display_errors
Parametermaskierungsfehler🎜php.ini
öffnen, dann display_errors suchen und den Wert auf „Aus“ setzen, um alle PHP-Fehlerberichte zu deaktivieren. 🎜(Im vorherigen Artikel „Wie lade ich Dateien in PHP hoch? Nach dem Lesen werden Sie es verstehen! “ wurden die relevanten Kenntnisse zum Entfernen von PHP- und INI-Konfigurationsdateien vorgestellt.)
Das Beispiel lautet wie folgt:
Auf diese Weise können Sie Wrong blockieren.
Bei Interesse können Sie auf „PHP-Video-Tutorial“ klicken, um mehr über PHP-Kenntnisse zu erfahren.
Das obige ist der detaillierte Inhalt vonWissen Sie, wie Sie Fehlerbehandlungsfunktionen und Fehlermaskierung in PHP anpassen können?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!