当前位置: 首页 > 工具软件 > PHP Error > 使用案例 >

PHP的错误处理

蒙洛华
2023-12-01

错误处理
错误的级别

1.notice:提示
2.warning:警告
3.error:致命错误
notice和warning报错后继续执行,error报错后停止执行

错误的提示方法

方法一:显示在浏览器上
方法二:记录在日志中

与错误处理有关的配置
在php.ini中

1.error_reporting = E_ALL:报告所有的错误
2.display_errors = On:将错误显示在浏览器上
3.log_errors = On: 将错误记录在日志中
4.error_log = '地址':错误日志保存的地址

在项目开发过程中有两个模式,开发模式,运行模式
开发模式:错误显示在浏览器上,不要记录在日志中
运行模式:错误不显示在浏览器上,记录在日志中

<?php
$debug=false;//true:开发模式  false:运行模式
ini_set('error_reporting',E_ALL);//所有的错误有报告

if ($debug):
    ini_set('display_errors','on');//错误显示在浏览器上
    ini_set('log_errors','off');//错误不显示在日志中
    else:
        ini_set('display_errors','off');
        ini_set('log_errors','on');
        ini_set('error_log','./err.log');//错误日志保存的地址
   endif;
   //测试
echo $num;
提示:ini_set()设置PHP的配置参数

自定义错误处理(了解)
通过trigger_error产生一个用户级别的error/warning/notice信息

$age=100;
if ($age>80)
//    trigger_error('年龄不能超过80岁');//默认触发了notice级别的错误
//    trigger_error('年龄不能超过80岁',E_USER_NOTICE);//触发notice级别的错误
//    trigger_error('年龄不能超过80岁',E_USER_WARNING);
    trigger_error('年龄不能超过80岁',E_USER_ERROR);//触发用户error错误
注意:用户级别的错误的常量名中一定要带有USER.

定义错误处理函数

//自定义错误处理函数
function error(){
    echo '这是自定义错误处理';
}
set_error_handler('error');//注册错误处理函数,只要有错误就会自动的调用错误处理函数
echo $num;

错误处理函数还可以带有参数

/**
 * @param $type int 错误类别
 * @param $msg  string 错误信息
 * @param $file string  文件地址
 * @param $line int 错误行号
 * 自定义错误处理函数
 */
function error($type,$msg,$file,$line){
    switch ($type){
        case E_NOTICE:
        case E_USER_NOTICE:
            echo '记录在日志中,上班后再处理<br>';
            break;
        case E_WARNING:
        case E_USER_WARNING:
            echo '给管理员发送邮件';
            break;
        case E_ERROR:
        case E_USER_ERROR:
            echo '给管理员打电话<br>';
            break;
    }
    echo "错误信息:{$msg}<br>";
    echo "错误文件:{$file}<br>";
    echo "错误行号:{$line}<br>";
}
set_error_handler('error');

echo $num;

//运行结果
记录在日志中,上班后再处理
错误信息:Undefined variable: num
错误文件:D:\phpStudy\PHPTutorial\WWW\test\demo14.php
错误行号:62
 类似资料: