• PHP中的错误处理


    一、PHP中调整错误报告级别的方式

    1修改php.ini文件的配置项

     注意:会导致在当前服务器环境下的所有PHP文件都受影响,实际开发过程中,不推荐此方式(如果代码更换服务器会导致配置文件全部失效,需重新配置,实际开发过程中,并不      推荐这种修改方式)

    >>>php.ini文件中的两个重要配置项

    display_errors:开启或关闭所有的错误级别

     可选值: 1/on开启报告 0/Off关闭所有错误报告
     eg:ini_set("display_errors","0");-->关闭所有错误报告

    error_reporting:设置哪些错误可以进行报告;

     eg:ini_set("error_reporting","E_ALL & ~E_NOTICE");-->报告所有错误且不报告notice错误;

    2直接在代码中使用ini_set()函数,动态的修改php.ini文件的配置项

    二、使用错误日志来记录出现的错误

    1、使用日志文件记录:使用error_log()函数将错误信息输出到日志文件中,默认日志文件在wamp中的log文件夹下,php_error.log文件。
    >>>自定义日志文件打印:
    ini_set("error_log","E:/test.txt")    注:这里用来设置日志文件地址
    error_log("出错啦"); 打印一句错误信息

    error_log("又出错了",3,"E:/test.txt"); 直接将错误打印到指定文件中

    2、写进windows系统日志中
    ini_set("error_log","syslog"); 设置日志记录到系统日志
    error_log("系统日志出错");使用日志报错时,将自动进入系统日志

    注:windows日志查看方式 计算机>管理>系统工具>事件查看器>事件摘要中找php>>

    三、自定义错误处理函数

    ① 声明一个错误处理函数 function func();
    ② 使用set_error_handler("func");设置当文件出现错误时,不再使用系统自带的错误提示功能,而是调用我们自定义的函数。
        注:set_error_handler("func")在触发函数时会默认向函数发送四个参数:分别是:错误的级别、错误的信息、发生错误的文件、错误所在的行号

    例:

    ini_set("log_errors", "On");
        $errMessage = "";
        function errorHandler($type,$message,$file,$line){
            global $errMessage;
            switch ($type) {
                case E_NOTICE:
                    $errMessage .= "发生了没有什么卵用的小bug,就不用处理了<br><br>";
                    echo "<script>"; 
                    echo "alert("{$errMessage}")"; 
                    echo "</script>"; 
                    break;
                case E_WARNING:
                    $errMessage .= "出错啦!!!";
                    $errMessage .= "错误类型是:{$type}";
                    $errMessage .= "错误信息是:{$message}";
                    $errMessage .= "错误发生的文件是:{$file}";
                    $errMessage .= "错误发生的行号是:{$line}";
                    $errMessage .= "<br><br>";
                    break;
                case E_ERROR:
                    echo "<script>"; 
                    echo "location.href='../test.php'"; 
                    echo "</script>"; 
                    break;
                default:
                    echo "<script>"; 
                    echo "location.href='../test.php'"; 
                    echo "</script>"; 
                    break;
            }
            
        }
        set_error_handler("errorHandler");
       
        echo $num;
       echo $errMessage;
  • 相关阅读:
    170619、springboot编程之HelloWorld
    170616、解决 java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList
    170615、spring不同数据库数据源动态切换
    pytest文档10-命令行传参
    pytest文档9-参数化parametrize
    pytest文档8-html报告报错截图+失败重跑
    pytest文档7-pytest-html生成html报告
    定位对应关系
    ADB 无线连接
    command failed shell "ps 'uiautomator'"的解决方式
  • 原文地址:https://www.cnblogs.com/adaia/p/6942096.html
Copyright © 2020-2023  润新知