怎么在php中实现错误处理?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
错误触发
有2种触发:
系统触发: E_NOTICE
:提示性错误,比如使用不存在的变量或常量E_WARNING
:警告性错误,比如include载入一个不存在的文件E_ERROR
:致命错误,导致程序无法执行后续语句,比如调用一个不存在的函数
自定义触发:
语法形式:trigger_error
("错误提示信息内容",3种用户错误代号之一);
其中触发了用户的致命错误(E_USER_ERROR
),也会终止程序的后续执行
错误显示
是否显示错误报告(display_errors)
有2种来设定是否显示:
1.在php.ini文件中,设定display_erros的值,为on(显示),或为off(不显示),开发阶段应该为on,显示错误信息
2.直接在php脚本文件中设定ini_set("display_errors",0);
//不显示错误报告,1为显示
显示哪些级别的错误报告(error_reporting)
前提是"display_errors"设置为on(或1),表示可以显示
1.在php.ini文件中 error_reporting=E_ALL | E_STRICT
这个值代表所有错误
在当前的脚本代码中设置
ini_set("error_reporting",E_NOTICE); //就显示该一个级别的错误 ini_set("error_reporting",E_NOTICE| E_WARNING); //显示该2个级别的错误 //禁用错误报告 error_reporting(0); //报告运行时错误 error_reporting(E_ERROR | E_WARNING | E_PARSE); //报告所有错误 error_reporting(E_ALL);
错误日志记录
错误日志其实就是错误报告,只是会写入文件中,此时就称为错误日志
是否记录log_errors
php.ini中:log_errors=on
或off 脚本中:ini_set("log_erros",1);
或0
补充: ini_set("php配置项",值);
//用于脚本中设置php.ini中某项的值$v=ini_get("php配置项");
//用于获取php.ini中某项的值
记录到哪里error_log
一般就只有2个写法:
1.直接写一个文件名,系统会自动在每个文件夹下都建立该文件名,并用其记录该文件夹下的所有网页文件发生的错误信息ini_set("error_log","my_error.txt");
//记录到该文件
2.使用一个特殊的名字"syslog",则所有的错误信息都会记录到系统的"日志文件中".系统日志文件在这里:控制面板》管理工具》事件查看器》window日志》应用程序:
ini_set("error_log","syslog");//记录到系统日志中
自定义错误处理器
让系统不要去处理错误了,完全由开发者对错误进行处理:显示和记录
第一步:设定要用于处理错误的函数名:set_error_handler("f1");
第二步:去定义该函数function f1() {这里可以写任意代码,正常去显示错误报告,和记录}
例:
set_error_handler("my_error_handler"); //定义该函数,需要定义4个形参分别代表$errCode:代表错误代号(级别) $errMsg:代表错误//信息内容 $errFile:代表错误的文件名 $errLine:代表错误的行号,一旦发生错误自动调用 function my_error_handler($errCode,$errMsg,$errFile,$errLine) { $str=""; $str .="<p><font color='red'>大事不好,发生错误:</font>"; $str .="<br />错误代号为:".$errCode; $str .="<br />错误内容为:".$errMsg; $str .="<br />错误代号为:".$errFile; $str .="<br />错误代号为:".$errLine; $str .="<br />发生时间为:".date("Y-d-m H:i:s"); $str .="</p>"; echo $str; //输出该构建完整的错误处理结果,也可以将改内容写到某个文件中去 }
异常抛出
function checkAge($age){ if($age>100) throw new Exception('年龄不能大于100'); echo '年龄符合规范'; } //如果年龄大于100,抛出异常 try{ checkAge(200); }catch(Exception $e){ echo $e->getMessage(); }
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。