PHP第6天 自定义错误处理01

    xiaoxiao2022-07-14  176

    自定义错误处理(重点/难点)

    之前,我们面对的情形都是错误发生的时候,系统生成错误,并处理错误(给出错误信息)。

    我们能控制的就只是:是否显示,显示什么,是否记录,记录到哪里?

     

    实际上,我们也可以更进一步控制错误信息,以决定错误发生的时候,显示什么样的错误信息。

    这就是“自定义错误处理”。

     

    具体做法,分2步:

    第1步:

    声明错误发生时,由我们自己来处理——设定一个错误处理的函数名。

    //set_error_handler("处理错误的自己的函数名");

    set_error_handler("my_error_handler");

    第2步:

    定义该函数,在函数中详细设定错误的处理情况:怎么显示,显示什么,怎么记录,记录什么。

    function my_error_handler($errCode, $errMsg, $errFile, $errLine)

    //参数解释:errCode错误代号,errMsg错误信息,errfile错误文件,errline行号

    //此形参顺序固定,而且是由系统会调用该函数并传入实参数据!

    {

    ....处理错误的代码....

    }

    注意:

    自定义错误只能处理“非致命错误”(就是不是E_ERROR错误)

    演示案例:

    <?php //自定义错误,分2步: //1,声明,我们自己使用自己的函数来处理错误 //set_error_handler("处理错误的自己的函数名"); set_error_handler("my_error_handler"); //2,定义该函数! function my_error_handler($errCode, $errMsg, $errFile, $errLine) //参数解释:errCode错误代号,errMsg错误信息,errfile错误文件,errline行号 //此形参顺序固定,而且是由系统会调用该函数并传入实参数据! { //此函数中,我们就可以去自己显示有关错误信息,和记录信息 $str = "<p>大事不好了,发生错误了,快来人啊。。。"; $str .= "<br>发生时间:" . date('Y-m-d H:i:s'); $str .= "<br>错误代号:" . $errCode; $str .= "<br>错误信息:" . $errMsg; $str .= "<br>错误文件:" . $errFile; $str .= "<br>错误行号:" . $errLine; $str .= "</p>"; echo $str; //也可以在这里继续去“记录错误”——就是错误日志 //FILE_APPEND表示该函数使用“追加模式”来写入数据 file_put_contents("./error.html", $str, FILE_APPEND); } //先给出几个出错的代码: echo "<br>v1=$v1"; //未定义的变量 include './no-this-file.php'; //载入失败 function I1(){} l1(); //调用不存在的函数; echo "<p>最后的段落</p>";

     

    最新回复(0)