php中错误处理操作实例分析


Posted in PHP onAugust 23, 2019

本文实例讲述了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这个值代表所有错误

php中错误处理操作实例分析

php中错误处理操作实例分析

  • 在当前的脚本代码中设置
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();
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php中常用编辑器推荐
Jan 02 PHP
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
May 17 PHP
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
May 07 PHP
Window下PHP三种运行方式图文详解
Jun 11 PHP
浅析php学习的路线图
Jul 10 PHP
小谈php正则提取图片地址
Mar 27 PHP
php制作文本式留言板
Mar 18 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
Jun 17 PHP
PHP巧妙利用位运算实现网站权限管理的方法
Mar 12 PHP
PHP二维关联数组的遍历方式(实例讲解)
Oct 18 PHP
PHP实现微信小程序用户授权的工具类示例
Mar 05 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
Dec 13 PHP
php+js实现的无刷新下载文件功能示例
Aug 23 #PHP
php简单检测404页面的方法示例
Aug 23 #PHP
PHP Redis扩展无法加载的问题解决方法
Aug 22 #PHP
PHP Primary script unknown 解决方法总结
Aug 22 #PHP
php用wangeditor3实现图片上传功能
Aug 22 #PHP
PHP生成zip压缩包的常用方法示例
Aug 22 #PHP
Laravel 实现数据软删除功能
Aug 21 #PHP
You might like
PHP导入Excel到MySQL的方法
2011/04/23 PHP
PHP时间和日期函数详解
2015/05/08 PHP
PHP实现的曲线统计图表示例
2016/11/10 PHP
PHP+MySQL实现模糊查询员工信息功能示例
2018/06/01 PHP
实现连缀调用的map方法(prototype)
2009/08/05 Javascript
jQuery select操作控制方法小结
2010/05/26 Javascript
javascript 数组操作详解
2015/01/29 Javascript
理解JavaScript的变量的入门教程
2015/07/07 Javascript
javascript闭包(Closure)用法实例简析
2015/11/30 Javascript
jQuery侧边栏实现代码
2016/05/06 Javascript
jQuery新窗口打开外链接
2016/07/21 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
2016/08/24 Javascript
Javascript Function.prototype.bind详细分析
2016/12/29 Javascript
jQuery实现弹窗居中效果类似alert()
2017/02/27 Javascript
js事件委托和事件代理案例分享
2017/07/25 Javascript
基于jquery实现多级菜单效果
2017/07/25 jQuery
微信小程序实现图片上传、删除和预览功能的方法
2017/12/18 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
2017/12/20 Javascript
微信小程序使用websocket通讯的demo,含前后端代码,亲测可用
2019/05/22 Javascript
JS操作json对象key、value的常用方法分析
2019/10/29 Javascript
Python基于pandas实现json格式转换成dataframe的方法
2018/06/22 Python
python3实现猜数字游戏
2020/12/07 Python
python生成requirements.txt的两种方法
2019/09/18 Python
CSS3实现鼠标悬停显示扩展内容
2016/08/24 HTML / CSS
美国电力供应商店/电气批发商:USESI
2018/10/12 全球购物
Happy Plugs官网:瑞典无线耳机品牌
2020/07/16 全球购物
员工年终演讲稿
2014/01/03 职场文书
防灾减灾日活动总结
2014/08/26 职场文书
2014年个人委托书范本
2014/10/13 职场文书
骨干教师申报材料
2014/12/17 职场文书
逃出克隆岛观后感
2015/06/09 职场文书
个人工作决心书
2015/09/22 职场文书
党员学习中国梦心得体会
2016/01/05 职场文书
Vue提供的三种调试方式你知道吗
2022/01/18 Vue.js
聊聊CSS粘性定位sticky案例解析
2022/06/01 HTML / CSS