zoukankan      html  css  js  c++  java
  • php 中的错误处理机制

    php 里有一套错误处理机制,可以使用 set_error_handler 接管 php 错误处理,也可以使用 trigger_error 函数主动抛出一个错误。

    set_error_handler() 函数设置用户自定义的错误处理函数。函数用户创建运行期间用户自己的错误处理方法。它需要先创建一个错误处理函数,然后设置错误级别。

    语法:

    set_error_handler(error_function, error_types)  

    参数:

    error_function:规定发生错误时运行的函数。必需。

    error_types:规定在哪个错误报告级别会显示用户自定义错误。可选。默认为 “E_ALL”。

    使用该函数,会完全绕过标准 php 错误处理函数(除非在错误处理函数中返回 false)。

    示例:

    function customError($errno, $errstr, $errfile, $errline)
    {
        echo "错误代码:[$errno] $errstr" . PHP_EOL;
        echo "错误所在代码行:$errline 文件 $errfile" . PHP_EOL;
        // die;
    }
    set_error_handler("customError");
    
    5/0;
    

      

    输出:

    错误代码:[2] Division by zero
    错误所在代码行:15 文件 /xxx/test.php
    

      

    在这里有一个需要说明的是:php 中的错误和异常是不一样的。php 中的错误默认是无法通过 try...catch 捕获的,如果我们想要捕获,可以在 error handler 里面捕获错误之后抛出一个异常。

    我们也可以在某些地方使用 restore_error_handler 取消自定义的错误处理。

    对于 fatal error:

    如果我们也想对其进行一些处理,php 也提供了 register_shutdown_function,这个函数会在 php 程序终止或者 die 时触发一个函数。

    对于 parse error,我们可以修改 php.ini 添加配置:

    log_errors=On

    error_log=usr/log/php.log

    总结:

    在 php 中,错误和异常是两个不同的概念,这种设计从根本上导致了 php 的异常和其他语言相异。Java 中,异常是错误唯一的报告方式。而 php 中异常绝大部分必须通过某种方法手动抛出,才能被捕获到,是一种半自动化的异常处理机制。

    无论是错误还是异常,都可以使用 handler 接管系统已有的处理机制。

  • 相关阅读:
    自动登录网站
    爬取梨视频
    爬虫介绍,request模块和代理ip
    数据结构与算法
    CMDB的总结
    自动化运维模块
    linux命令补充
    centos7的目录结构,文件系统常用的命令,vim编辑器
    linux配置网卡文件,xshell链接服务,快照,克隆,修改主机名
    flask的请求扩展,错误处理,标签和过滤器,中间件以及cbv的写法
  • 原文地址:https://www.cnblogs.com/eleven24/p/8999066.html
Copyright © 2011-2022 走看看