二,php的错误处理
php处理错误的三种方式: 简单的die()语句; 自定义错误和错误触发器;错误日志;
1,简单的die()语句
if(!file_exists("aaa.txt")){
die("文件不存在");
}else{
$fp = fopen("aaa.txt","r");
}
上面的代码和下面的代码功能相同
file_exists("aaa.txt") or die("文件不存在!");
$fp = fopen("aaa.txt","r");
2,自定义错误和错误触发器
php自带错误处理器,可以自己编写错误处理器。
(2.1)创建一个自定义的错误函数非常简单,我们可以创建一个专用函数,在PHP发生错误时候调用该函数。该函数必须有能力处理至少两个参数(error level 和error message),但是可以接受最多五个参数(可选的file,line-number以及error context):
(2.2)基本语法:error_function(error_level,error_message,error_file,error_line,error_context)
(a),编写错误函数。
(b),编写set_error_handler(),通知php系统,弃用默认错误处理器,使用自定义的错误函数。
(2.3)PHP中有不同的错误级别控制
值 |
常量 |
描述 |
2 |
E_WARNING |
非致命的run-time错误,不暂停脚本运行。 |
8 |
E_NOTICE |
Run-time通知,脚本发现可能有错误发生,但也可能在脚本正常运行时发生。 |
256 |
E_USER_ERROR |
致命的用户生成的错误,这类似于程序员使用PHP函数trigger_error()设置的E_ERROR。 |
512 |
E_USER_WARNING |
非致命的用户生成的错误,这类似于程序员使用PHP函数trigger_error()设置的E_WARNING。 |
1024 |
E_USER_NOTICE |
用户生成的通知,这类似于程序员使用PHP函数trigger_error()设置的E_NOTICE。 |
4096 |
E_RECOVERABLE_ERROR |
可捕获的致命错误,类似E_ERROR,但可被用户定义的处理程序捕获。(参见set_error_handler()) |
8191 |
E_ALL |
所有错误和警告,除级别E_STRICT以外。(在PHP6.0,E_STRRICT是E_ALL的一部分。) |
(2.4)语法错误,set_error_handler()错误控制案例,此处错误适应于E_WARNING,E_NOTICE,E_RECOVERABLE_ERROR,E_ALL。
//定义了一个函数
function my_error($errno,$errmes){
echo "<font size='5' color='red'>$errno.$errmes</font>";
exit();
}
//改写set_error_handler处理器
set_error_handler("my_error",E_WARNING); //定义了一个函数
function my_error1($errno,$errmes){
echo "<font size='5' color='red'>$errno.$errmes</font>";
exit();
}
//改写set_error_handler处理器
set_error_handler("my_error1",E_NOTICE); $fp=fopen("aa.txt","r");
(2.5)逻辑错误,trigger_error()错误控制案例,这个可以在代码中编写程序,排除逻辑错误情况,没有必要使用trigger_error()。
$age = 700;
if($age > 120){
//调用触发器
trigger_error("输入年龄过大");
exit();
}
自定义一个错误处理函数(和上类似),此处适用于E_USER_ERROR,E_USER_WARNING,E_USER_NOTICE。
function my_error3($errno,$errmes){
echo "错误号是:".$errno;
}
set_error_handler("my_error3",E_USER_ERROR);//此处适用于E_user_ERROR,E_user_WARNING,E_user_NOTICE
$age = 700;
if($age > 120){
trigger_error("输入年龄过大",E_USER_ERROR);
}
3,PHP错误日志
基本方法使用error_log(),使用方法如下,执行完如下代码,会在代码页所在的文件夹产生myerr.txt这个文件。
function my_error3($errno,$errmes){
$err_info = "错误号是:".$errno;
echo $err_info;
date_default_timezone_set("Asia/Chongqing");
error_log("时间是".date("Y-m-d G-i-s")."--".$err_info."\r\n",3,"myerr.txt");
}
set_error_handler("my_error3",E_USER_ERROR);//此处适用于E_user_ERROR,E_user_WARNING,E_user_NOTICE
$age = 700;
if($age > 120){
trigger_error("输入年龄过大",E_USER_ERROR);
}
二,php的错误处理的更多相关文章
- oracle 11g RAC安装节点二执行结果错误CRS-5005: IP Address: 192.168.1.24 is already in use in the network
[root@testdb11b ~]# /u01/app/oraInventory/orainstRoot.sh Changing permissions of /u01/app/oraInvento ...
- ArcEngine10.1二次开发错误: 无法嵌入互操作类型,请改用适用的接口
在之前配置ArcEngine.VS2010二次开发程序的时候,遇见"无法嵌入互操作类型,请改用适用的接口"的错误,在网上查了下,下面引用解决方法. 解决方式为在提示错误的引用上面右 ...
- 前端监控系统(二)JS错误日志收集篇
前端监控系统 目前已经上线,欢迎使用! 服务器搭建好了,可以着手开发了. 其实前端需要分析的数据有很多,包括,PVUV, 接口请求统计,耗时统计,JS错误统计,用户使用设备统计,用户地域分布,页面用户 ...
- 搭建前端监控系统(二)JS错误监控篇
===================================================================== 前端性能监控系统: DEMO地址 GIT代码仓库地址 ...
- AutoCAD.NET二次开发错误集锦
1.CAD崩溃,错误“unhandled access violation reading”=“未将对象引用设置到对象的实例”. 2. 建模操作错误:指向给定边的指针为空. 建模操作错误:访问冲突. ...
- Swift--基础(二)元组 断言 错误处理
元组(tuples) 把多个值组合成一个复合值.元组内的值可以是任意类型,并不要求是相同类型 let http404Error = (404, "Not Found") let ( ...
- Java进阶(十二)JDK版本错误之Unsupported major.minor version 51.0(jdk版本错误)
错误:Unsupported major.minor version 51.0(jdk版本错误) 如果在win7下开发项目是使用的jdk版本和项目运行服务器jdk版本不同就会出现上面的问题. 用jdk ...
- ArcEngine二次开发错误编码对照表(转)
阅读数:3323 每当我们在进行AE开发,出现错误时经常会出现错误代码,但是我们并不知道它到底代表什么意思,这里的而错误编码我们可以对照着找到我们需要的时候常详细信息(问题是,经常还是会出现没有错误编 ...
- ALERT日志中常见监听相关报错之二:ORA-3136错误的排查
最近在多个大型系统中遇到此问题,一般来说假设client未反映异常的话能够忽略的. 假设是client登陆时遇到ORA-12170: TNS:Connect timeout occurred,能够參考 ...
- Java编程思想之十二 通过异常处理错误
Java的基本概念是结构不佳的代码不能运行余下的问题必须在运行期间解决,这就需要错误源能通过某种方式,把适当的信息传递给某个接收者--该接收者将知道如何正确处理这里问题. 12.1 概念 使用异常所带 ...
随机推荐
- 浅谈Java中set.map.List的区别
就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...
- BCompare 4重置试用天数
BCompare安装后有30天试用期,试用结束后,你可以卸载重装,以重新获得30天试用天数. BCompare的使用天数记录保存在注册表中,如果不想每次重装,也可删除对应的注册表值来重置激活天数. 命 ...
- C# chart.DataManipulator.FinancialFormula()公式的使用 线性回归预测方法
最近翻阅资料,找到 chart.DataManipulator.FinancialFormula()公式的使用,打开另一扇未曾了解的窗,供大家分享一下. 一 DataManipulator类 运行时, ...
- Spring AOP 详解 【转】
此前对于AOP的使用仅限于声明式事务,除此之外在实际开发中也没有遇到过与之相关的问题.最近项目中遇到了以下几点需求,仔细思考之后,觉得采用AOP 来解决.一方面是为了以更加灵活的方式来解决问题,另 ...
- 关于解决百度sitemap1.0一直提示校验中问题
实际原因是php设置问题,各个版本对应的设置有些不一样. php版本改成就好了. 修复方法:在插件里找到插件:\baidusubmit\inc.找到sitemap.php,查找curl_setopt( ...
- hydra(九头蛇)多协议暴力破解工具
一.简介 hydra(九头蛇)全能暴力破解工具,是一款全能的暴力破解工具,使用方法简单 二.使用 使用hydra -h 查看基本用法 三.命令 hydra [[[-l LOGIN|-L FILE] [ ...
- 两个SSH2间免密码登录
SSH2免密码登录OpenSSHhttp://blog.csdn.net/aquester/article/details/23836299 OpenSSH免密码登录SSH2http://blog.c ...
- google earth 中的飞行模拟器的键盘控制
- 洛谷P2634 [国家集训队]聪聪可可 (点分治)
题目描述 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一般情况下石头剪刀布就好了,可是他们已 ...
- Rational Rose简明实用教程
转载 https://blog.csdn.net/gz153016/article/details/49641847 求下列算法的时间复杂度 void aFunc(int n) { ; i < ...