php怎么自定义错误提示

在PHP中可以通过“set_error_handler()”函数自定义错误处理,该函数的作用就是指定另一个函数作为错误处理函数,语法如“set_error_handler(callable $error_handler…)”。

php怎么自定义错误提示

本文操作环境:Windows7系统、PHP7.1版,DELL G3电脑

php怎么自定义错误提示?

PHP set_error_handler():自定义错误处理函数

PHP 中提供一个 set_error_handler() 函数,使用该函数可以指定另一个函数作为错误处理函数,其语法如下:

立即学习“PHP免费学习笔记(深入)”;

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

登录后复制

参数说明

1) $error_handler 是用户自定义的函数名称,除了可以传入函数名,还可以传入 NULL 重置处理程序到默认状态,还可以传入引用对象和对象方法名的数组。

用户自定义函数的格式如下:

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

登录后复制

其中:

第一个参数 $errno 表示错误的级别,是一个 integer 类型;

第二个参数 $errstr 表示错误的信息,是一个 string 类型;

第三个参数 $errfile 是一个可选参数,表示发生错误的文件名,是一个 string 类型;

第四个参数 $errline 也是一个可选参数,表示发生错误的行号,是一个 integer 类型;

第五个参数 $errcontext 同样是一个可选参数(在 PHP7.2.0 之后被弃用),表示错误发生时活动符号表的 array。也就是说 $errcontext 会包含错误触发处作用域内所有变量的数组。用户的错误处理程序不应该修改错误上下文(context)。

注意:如果 set_error_handler() 函数返回 FALSE,标准错误处理程序将会继续调用。

2) $error_types 参数就像配置文件 php.ini 中 error_reporting 能够控制错误的显示一样,此参数能够用于屏蔽 $error_handler 的触发。如果没有该掩码,无论 $error_reporting 是如何设置的,$error_handler 都会在每个错误发生时被调用。

如果之前有定义过错误处理程序,则返回该程序名称;如果是内置的错误处理程序,则返回 NULL。如果指定了一个无效的回调函数,同样会返回 NULL。如果之前的错误处理程序是一个类的方法,此函数会返回一个带类和方法名的索引数组(indexed array)。

【示例】自定义一个错误处理函数,并使用它来处理程序中的错误。

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

登录后复制

运行结果如下:

error number:2error msg:strpos() expects at least 2 parameters, 0 givenerror file:D:WWWindex.phperror line:10something error

登录后复制

注意:使用这种方式进行错误处理,如果没有在错误处理函数中终止程序的执行,程序将会继续执行发生错误的下一行,所以需要使用 die() 函数来终止程序的运行。

另外需要注意的是,这种错误处理方式并不能接管所有级别的程序错误,E_ERROR、E_PARSE、E_CORE_ERROR、E_CORE_WARNING、E_COMPILE_ERROR、E_COMPILE_WARNING 以及 E_STRICT 部分的错误将会以最原始的形式显示出来。

set_error_handler() 进阶

PHP 的异常处理机制不完善,无法自动抛出异常,用户也可使用 set_error_handler() 这种方式将异常当作错误来处理,这样用户就可以使用自定义的错误处理函数来自动捕获异常了。

【示例】使用自定义的错误处理函数来自动捕获异常。

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

登录后复制

运行结果如下:

error number:2error msg:Division by zeroerror file:D:WWWindex.phperror line:12something error

登录后复制

当程序执行到第 12 行$a = 5/0;语句时,程序会自动捕获了这个异常,并由用户自定义的函数进行处理。

推荐学习:《PHP视频教程》

以上就是php怎么自定义错误提示的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2513291.html

(0)
上一篇 2025年3月5日 15:07:47
下一篇 2025年3月1日 16:21:34

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • php中require是什么意思

    在php中,require的意思为“引入文件”,一般用于“包含并运行指定文件”,即在执行流中插入写在其它文件中的有用的代码,语法“require ‘文件名’”。require语句引入文件时,如果碰到错误,会给出提示,…

    2025年3月5日
    200
  • php中的不等运算符是什么和什么

    php中的不等运算符是“!=”、“!==”和“”。“!=”和“”运算符完全等价,没有任何区别,用于比较两个对象的值是否相等;而“!==”运算符表示绝对不等于,除了比较值,还会比较类型。 本教程操作环境:windows7系统、PHP7.1版,…

    2025年3月5日
    200
  • PHP如何使用OpenSSL加密中的证书操作

    本篇文章给大家介绍一下php使用openssl加密中证书操作的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 关于对称和非对称的加密操作,我们已经学习完两篇文章的内容了,接下来,我们就继续学习关于证书的生成。 生成 …

    2025年3月5日
    200
  • PHP如何使用OpenSSL加密中的非对称加密

    本篇文章给大家介绍一下php使用openssl加密中非对称加密的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 上篇文章,我们了解了关于对称和非对称加密的一些相关的理论知识,也学习了使用 OpenSSL 来进行对称加…

    2025年3月5日
    200
  • php怎么比较字符串(不区分大小写)

    PHP不区分大小写比较字符串的方法:1、使用“strcasecmp(字符串1,字符串2)”语句;2、使用“strnatcasecmp(字符串1,字符串2)”语句;3、使用“strncasecmp(字符串1,字符串2,length)”语句。 …

    2025年3月5日
    200
  • 如何使用PHP中的runkit扩展

    本篇文章给大家介绍一下使用php中的runkit扩展的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 这次又为大家带来一个好玩的扩展。我们知道,在 PHP 运行的时候,也就是部署完成后,我们是不能修改常量的值,也不能…

    2025年3月5日
    200
  • php数组替换函数有哪些

    php数组替换函数有:1、array_replace()函数,使用后面数组的值替换第一个数组的值;2、array_replace_recursive()函数,递归地使用后面数组的值替换第一个数组的值;3、array_splice()函数。 …

    2025年3月5日
    200
  • php小数怎么转为整数

    方法:1、使用floor()函数向下舍入为最接近的整数,语法“floor (小数)”;2、使用ceil()函数向上舍入为最接近的整数,语法“ceil(小数)”;3、使用round()函数对浮点数进行四舍五入,语法“round(小数)”。 本…

    2025年3月5日
    200
  • php和java语法上的区别是什么

    区别:1、PHP支持“//”、“#”和“/**/”注释方式,java支持“//”、“/**/”和“/***/”注释方式。2、java中所有函数名、关键字、类、变量等都是大小写敏感;PHP不是。3、PHP是弱引用类型,java是强引用类型等。…

    2025年3月5日
    200
  • php怎么修改错误级别

    在php中,可以使用error_reporting()函数来修改错误级别,该函数可以规定报告哪个错误,语法格式“error_reporting(level)”;参数level规定当前脚本的错误报告级别,值数字和常量名都能接受。 本教程操作环…

    2025年3月5日
    200

发表回复

登录后才能评论