php 后端服务错误定义,PHP之自定义错误处理器

首先,什么是自定义错误处理器呢?其实简单易懂点就是我们在编程中自己定义的一种显示错误的信息。

那么废话不多说,先上一段代码,如下:

$fp = fopen("abc.txt", "r");

echo "ok";

?>

之行代码,显示如下错误提示:

Warning: fopen(abc.txt): failed to open stream: No such file or directory in D:webtesterror2.php on line 2

ok

上面是一个默认情况下我们在之行error2.php文件后显示的一个错误信息,它里面默认之行的是php给我们设定好的错误显示信息,那么我们要如何来自定义错误函数显示呢?

创建一个自定义的错误处理器非常简单。我们很简单地创建了一个专用函数,可以在 PHP 中发生错误时调用该函数。

该函数必须有能力处理至少两个参数 (error level 和 error message),但是可以接受最多五个参数(可选的:file, line-number 以及 error context):

它的语法如下:

error_function(error_level,error_message,error_file,error_line,error_context)

详细的参数说明如下”

参数

描述

error_level

必需。为用户定义的错误规定错误报告级别。必须是一个值数。

参见下面的表格:错误报告级别。

error_message

必需。为用户定义的错误规定错误消息。

error_file

可选。规定错误在其中发生的文件名。

error_line

可选。规定错误发生的行号。

error_context

可选。规定一个数组,包含了当错误发生时在用的每个变量以及它们的值。

废话说了那么多,那么接下我们就使用自定义的一个错误函数来让他显示。

首先,我们需要定义一个自定义的错误函数,如下:

function my_error($errno,$errmsg){

echo "错误号:".$errno."
";

echo "错误信息:".$errmsg;

}

my_error:函数名称,是我们自己定义的一个错误函数名称,你可以随便定义;

$errno:这是一个参数,代表错误号或者说错误级别,这个名称也是自己定义;

$errmsg:这是一个参数,代表错误信息,这个名称也是自己定义;

那么当然,光有一个自己定义的错误函数是不够的,我们还需要通过一个桥梁来桥接,那么这个时候需要用到一个php内部定义的一个桥接函数set_error_handler(),这个函数的详细官方给出的定义如下:

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

那么什么意思呢?

第一个参数的意思就是你自定义错误函数的函数名称;

第二个参数的意思就是指定一个错误的级别,这个级别在官方文档能够查到。例如:E_WARNING / E_USER_WARNING等。

如下表:

常量

描述

2

E_WARNING

非致命的 run-time 错误。不暂停脚本执行。

8

E_NOTICE

Run-time 通知。

脚本发现可能有错误发生,但也可能在脚本正常运行时发生。

256

E_USER_ERROR

致命的用户生成的错误。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_ERROR。

512

E_USER_WARNING

非致命的用户生成的警告。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_WARNING。

1024

E_USER_NOTICE

用户生成的通知。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_NOTICE。

4096

E_RECOVERABLE_ERROR

可捕获的致命错误。类似 E_ERROR,但可被用户定义的处理程序捕获。(参见 set_error_handler())

8191

E_ALL

所有错误和警告,除级别 E_STRICT 以外。

(在 PHP 6.0,E_STRICT 是 E_ALL 的一部分)

所以我们可以通过set_error_handler()函数来桥接到我们的自定义错误函数上,如下:

//通过php函数set_error_handler来将错误显示信息桥接到我们自己定义的函数上

set_error_handler("my_error",E_WARNING);

此时我们通过浏览器运行之前的error2.php文件,发现,显示的错误信息为如下内容了:

错误号:2

错误信息:fopen(abc.txt): failed to open stream: No such file or directory

ok

所以这就变成了我们自己定义的一个错误处理器,当然,还有更多的大家可以在w3school上学习或者php官方网站学习都是可以的,这里就不再一一介绍了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值