zoukankan      html  css  js  c++  java
  • php设定错误和异常处理可使用的函数

    1、register_shutdown_function

    使用场景:当我们的脚本执行完成或意外死掉导致PHP执行即将关闭时,这个函数会被调用。

    函数介绍:

    void register_shutdown_function(callback $callback[.mixed $parameter]);

    Registers a callback to be executed after script execution finishes or exit() is called.

    下面我们看一个例子:

    <?php
    //只有一行代码的脚本
    require_once '123';

    *报错如下*

    Warning: require_once(123): failed to open stream: No such file or directory in......index.php on line 33
    
    Fatal error: require_once(): Failed opening required '123' (include_path='.;C:phppear') in ......index.php on line 33

    我们使用这个函数后的代码如下:

    <?php 
    
    /**
     * 在脚本开始处设置一个标识$flag为false。
     * 当程序执行到末尾,令其为true。
     * 如果在执行过程中发生了错误而调用register_shutdown_function函数
     * 那么这个标识位仍然为false。以此来判断是否发生错误。
     * */
    $flag = false;
    // 此函数用于判断是否发生错误
    function callError(){
        global $flag;
        if($flag==true){
            echo "正常!";
        }else{
            die("我错了,呜呜呜");
        }
        return false;
    }
    register_shutdown_function(callError());
    //制造致命错误
    require_once '123';
    
    $flag = true;
    *执行结果*
    
    我错了,呜呜呜

    推荐阅读>>

    PHP register_shutdown_function函数的深入解析

    PHP register_shutdown_function函数详解

    2、set_error_handler()

    使用场景:该函数用于创建运行期间的用户自己的错误处理方法。

    可以用来屏蔽错误信息,防止将一些信息暴露给用户;可以记录错误信息,即使发现生产环境出现的问题;可以做相应的处理,出错时可以显示跳转到预先定义好的出错页面,提供更好的用户体验;可以作为调试工具。

    使用方法:

    set_error_handler(error_function,error_types);

    error_function:必须,规定发生错误时运行的函数

    error_types:可选,规定在哪个错误报告级别会显示用户定义的错误,默认是"E_ALL".

    提示:如果使用了该函数,会完全绕过标准的PHP错误处理函数,如果必要,用户定义的错误处理程序必须终止(die())脚本。

    注释:如果在脚本执行前发生错误,由于那时自定义程序还没注册,将不会用到这个自定义错误处理程序。

    下面上一个简单的代码:

    <?php 
    /**
     * 下面为自定义的错误处理函数
     * 注意注意再注意:这个函数一定要有四个输入变量$errno,$errstr,$errfile,$errline
     * */
    function my_error_handler($errno,$errstr,$errfile,$errline)
    {
        //在这里,就不做具体的错误处理了,咱们看一下传入的参数都是什么吧
        var_dump($errno);
        var_dump($errstr);
        var_dump($errfile);
        var_dump($errline);
        die("出错了,结束吧!");
    }
    set_error_handler("my_error_handler");
    require '123';
     
    *结果*
    
    
    int 2
    string 'require(123): failed to open stream: No such file or directory' (length=62)
    string '......1.php' (length=31)
    int 16
    出错了,结束吧!

    具体实现,强烈推荐阅读下面这篇文章,总结的很详细>>PHP set_error_handler()函数的使用

    3、set_exception_handler()

    使用场景:该函数用于创建运行时期间的用户自己的异常处理方法

    函数定义:string set_exception_handler ( callback $exception_handler )

    参数:必须,规定未捕获的异常发生时调用的函数

    说明:该函数必须在调用set_exception_handler()函数之前定义。这个异常处理函数需要一个参数,即抛出的exception对象

    提示和注释:在这个异常处理程序被调用后,脚本会停止执行。

    下面甩出代码:

    <?php 
    
    function exception_handler($exception) {
        echo "Uncaught exception: " , $exception->getMessage(), "
    ";
    }
    
    set_exception_handler('exception_handler');
    
    throw new Exception('Uncaught Exception');
    echo "Not Executed
    ";


    推荐阅读>>http://php.net/manual/en/function.set-exception-handler.php

  • 相关阅读:
    Sales Portal遇到问题及解决
    LYOA 遇到的问题及解决方案
    ERS遇到的问题及solution
    ehr遇到问题及解决方法
    dropdownlist中的Checkbox,可控制是否postback
    javascirpt
    【spring boot】idea下springboot打包成jar包和war包,并且可以在外部tomcat下运行访问到(转)
    SpringBoot2.1整合finereport10(帆软报表)
    Windows下MyCat配置MySql读写分离
    Windows下MySQL主从同步
  • 原文地址:https://www.cnblogs.com/ddddemo/p/5624021.html
Copyright © 2011-2022 走看看