• PHP从入门到精通(六)


    PHP中的错误处理

    1、PHP的错误级别:见表格。
    2、调整PHP错误报告级别:
    PHP中,调整错误报告级别的方式有两种:
    ①修改PHP.ini文件的配置项。
    a、会导致在当前服务器环境下所有PHP文件都受其影响。
    b、如果代码更换服务器,会导致配置文件全部失效,需要重新配置。
    所以实际开发过程中,并不推荐使用此方式!!
    ②在代码中使用ini_set()函数,动态的修改php.ini文件的配置项;(get为获取配置项)

    >>>php.ini中的两个重要配置项:
    ①display_errors:开启或关闭所有错误级别报告;
    可选值:1/On表示开启所有错误报告功能; 0/Off表示关闭所有报告;
    默认开启,而且强烈建议开启!!

    代码实例:

    ini_set("display_errors","0");---->关闭错误报告功能;

    ②error_reporting:设置那些错误可以进行报告;
    有两个函数可以设置:ini_set()和error_reporting;

    代码示例:

    ini_set("error_reporting",E_ALL);报告所有级别;
    error_reporting("E_ALL & ~E_NOTICE");不报告notice级别,其他均正常报告;

    3、使用错误日志,记录出现的错误;
    ①使用日志文件记录:
    使用error_log()函数将错误信息输出到日志文件中。默认的日志文件在wamp中的log文件夹下,php_error.log文件;
    >>>自定义日志文件打印错误:

    代码示例:

    ini_set("error_log","E:/text.txt");//设置日志文件地址;
    error_log("出错了!!!");//打印一句错误信息;
    
    error_log("这是一个PHP错误",3,"E:/textLog.text");//直接将错误信息打印到指定文件中;

    ②写进Windows系统日志中:

    代码示例:

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

    4、trigger_error:自定义一个错误;会像系统错误一样。产生报错。
    参数①:错误的信息内容;
    参数②:错误的级别。常选E_USER_NOTICE E_USER_WARRING E_USER_ERRORS;

    5、自定义错误处理函数:
    ①声明一个错误处理函数function func(){}
    ②使用set_error_handler("func");设置,当文件出现错误时,不再使用系统自带的错误提示功能,而是调用我们自定义的函数。
    >>>set_error_handler在除法函数时,会默认想函数发送四个参数:分别是:错误的级别、信息、文件、所在行号;
    所以可以在声明函数时,接受错误信息,具体处理。

    实例展示:

    复制代码
    ini_set("display_errors", 1);
        $errMessage="";
        function errorHandler($type,$message,$file,$line){
            global $errMessage;
            switch ($type) {
                case E_NOTICE:
                    $errMessage .= "发生了没有什么卵用的小bug,就不用处理了<br><br>";
                    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='../01text.php'"; 
                    echo "</script>"; 
                    break;
                default:
                    echo "<script>"; 
                    echo "location.href='../01text.php'"; 
                    echo "</script>"; 
                    break;
            }
            
        }
        set_error_handler("errorHandler");
    
        //ini_set("error_reporting",E_ALL);
        //error_reporting(E_ALL & ~E_NOTICE);
        ini_set("error_log", "syslog");
        error_log("这是一个PHP错误",3,"E:/textLog.text");
    echo $num;
    //trigger_error("22222222",E_USER_NOTICE);//自定义一个错误,上述函数未接受,因此会进入default;
    echo "11111";
    echo "</br>-------------------------------------------------</br>";
    echo $errMessage;
    复制代码
  • 相关阅读:
    Java File类应用:递归遍历文件夹和递归删除文件
    综合应用题:多线程复制文件(知识点:多线程、随机读写流)
    Java IO流之随机读写流RandomAccessFile
    Java之枚举----小试牛刀练习
    Java之枚举
    PHP笔试题及答案
    静态方法何时使用
    你怎么理解并使用静态方法和实例化方法的?
    99%的人理解错 HTTP 中 GET 与 POST 的区别
    描述一下大流量高并发量网站的解决方案
  • 原文地址:https://www.cnblogs.com/cangqinglang/p/8821631.html
Copyright © 2020-2023  润新知