PHP中的错误处理&自定义错误处理方法



1.用户自定义错误
1)E_USER_ERROR
2) E_USER_WARNING
3) E_USER_NOTICE




2.E_ALL   E_STRICT
E_ALL表示所有错误
E_STRICT代表严格性语法检查错误(某种语法是正确的,但是不建议使用)




3.错误的触发
1)正常触发
PHP自动处理
2) 人工触发
由程序员通过程序代码假设产生的一个错误
trigger_error("错误提示", 用户错误代号);

如: trigger_error("致命错误,未定义的函数调用", E_USER_ERROR);






4.错误的显示控制
网页中显示错误信息是可以控制的,有两种途径:
1)在php.ini文件中配置,对所有php文件都有效
2)在当前脚本文件中,只对当前脚本文件有效




错误的显示可以用两种方法控制
1)设定是否显示:display_errors
php.ini中的配置项:display_errors = on (off表示不显示)
2)脚本中配置:ini_set()
ini_set("display_errors", true); (也可以用数字1,同理0、false)




设定显示哪些级别的错误(用 位运算中 与& 或| 非~ 来灵活控制)

error_reporting = E_NOTICE 只显示E_NOTICE错误
error_reporting = E_NOTICE | E_WARNING 显示E_NOTICE和E_WARNING错误
error_reporting = E_NOTICE | E_WARNING | E_USER_ERROR 全部显示



error_reporting = E_ALL | E_STRICT 全部显示(建议使用这种)



关闭错误(类型于根据位值控制灯泡开关一样)
error_reporting = E_ALL | E_STRICT & ~E_NOTICE          关闭E_NOTICE错误显示


在代码中设定
iniset("error_reporting", E_ALL | E_STRICT & ~E_NOTICE) 只关闭E_NOTICE错误显示




ini_get("设定项名称");     用于获取某项的值






5.记录错误日志
开发阶段:显示所有错误
产品阶段:隐藏所有错误(写入错误日志)




1)php.ini文件中设定
log_errors = On   用于设定是否记录错误日志(~559~)
error_log = php_errors.log 用于设定记录错误日志的文件名(~643~)
默认路径就是当前运行脚本的文件夹
log_errors = syslog 不会记录错误日志,而是把错误写到操作系统日志中(控制面板-管理工具)


2)在当前脚本中设定(只在当前脚本有效)
ini_set("log_errors", On);


ini_set("error_log", 'error1.log');
ini_set("error_log", 'error1.txt');
ini_set("error_log", 'error1.html');

ini_set("error_log", syslog);





6.自定义错误处理
1)设定自定义处理错误的函数名
2)定义该函数


set_error_handler("MyError");       函数指针

function MyError($errNo, $errMsg, $errFile, $errLine)
{
echo "发生错误:文件:$errFile 的第 $errLine 错误,错误号为:$errNo 错误信息为:$errMsg";
}


该函数由系统自己调用和传参,我的理解就类似一个回调函数,底层给我们抛上来一个接口,我们并不用关心底层
何时去调用这个函数,而我们只需要做的是根据自身实际需求去写自己的业务逻辑就行了。就比方银行给各大厂商
一个加密接口,而每个厂商去各自写自己的加密算法。业务和逻辑分离,降低耦合。




7.说明
1)一旦使用自定义错误程序,则系统不再处理错误
2)如果发生严重错误(E_ERROR, E_USER_ERROR)则立即会停止程序,并不会调用自定义错误处理程序
此时的系统错误处理工作会开始进行(对于严重错误,自定义错误处理函数是处理不了的)







2015-10-27 21:35:48
written by zhangshichuan







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值