php中的错误处理
2016-07-05 15:09
459 查看
手册中的位置:语言参考---异常处理
或者在w3c教程手册中的:服务器脚本/php高级/php错误处理(php异常处理)
如下代码:
[php] view
plain copy
$fp = fopen("a.txt","r");
如果a.txt文件不存在,程序就会报告警告或者错误。所以为了程序的健壮性,应该先判断a.txt文件是否存在。
[php] view
plain copy
if(!file_exists("a.txt")){
echo "文件不存在";
exit();
}
PHP处理错误的方式有以下几种:
1.die语句
2.自定义错误处理函数
3.自定义错误触发器
4.错误日志的方式
1.die语句
die语句终止简本,等价于exit语句,但是die可以输出提示语句。
如:
[php] view
plain copy
if(!file_exists("a.txt")){
die("文件不存在");
}
也可以写成
[php] view
plain copy
file_exists("a.txt") or die("文件不存在");
die之后的语句不会被执行。
2.自定义错误处理函数(系统识别)
[php] view
plain copy
$fp=fopen("a.txt","r");
对于这句代码,系统会打印出warning:.....这是系统默认的处理。我们可以通过自定义处理方式处理错误,而不是交由系统默认处理。
【补充】 php中的错误级别:
[php] view
plain copy
E_WARNING , E_NOTICE ,E_USER_ERROR,E_USER_WARNING,E_USER_NOTICE, E_RECOVERABLE_ERROR , E_ALL
等
自定义的错误处理函数必须至少接受2个参数(error level,error message),可最多接受5个参数,其余3个都为可选参数(file,line number,error context)。
[php] view
plain copy
function my_error($errno ,$errmsg){
}
通过set_error_handler("my_error",错误级别);让系统覆盖原来的默认处理函数,使用指定的函数处理指定错误级别的错误。
此处的错误级别一般为不以E_USER开头的错误级别。
这种处理方式是系统自动匹配识别出现错误属于哪种级别。
3.错误触发器(用户识别)
现有需求:如果年龄大雨120,则认为程序错误。
按照传统的方式:
[php] view
plain copy
if($age>120){
exit();
}
触发器方式:
先自定义错误触发器,错误触发器的定义和错误处理函数的定义相似,其参数一样,也是必须至少接受2个参数(error level,error message),可最多接受5个参数,其余3个都为可选参数(file,line number,error context)。
[php] view
plain copy
function my_error($errno,$errmsg){
}
再通过set_error_handler("my_error",错误级别)设置错误触发器触发级别以及处理函数。该处的错误级别一般是以E_USER开头的错误级别。
最后在程序中调用trigger_error("my_error",同时指定错误级别)。如果,指定的该错误级别与设置触发的级别不同,则不会触发错误处理函数;如果相同,才会触发错误处理函数。
[php] view
plain copy
function my_error($errno,$errmsg){
}
set_error_handler("my_error",E_USER_WARNING);
if($age>120){
trigger_error("my_error",E_USER_WARNING);//级别相同,会触发错误处理函数
trigger_error("my_error",E_USER_NOTICE);//级别不相同,不会触发错误处理函数
}
这种处理方式是需要人工手动指定出现的错误的级别。
或者在w3c教程手册中的:服务器脚本/php高级/php错误处理(php异常处理)
如下代码:
[php] view
plain copy
$fp = fopen("a.txt","r");
如果a.txt文件不存在,程序就会报告警告或者错误。所以为了程序的健壮性,应该先判断a.txt文件是否存在。
[php] view
plain copy
if(!file_exists("a.txt")){
echo "文件不存在";
exit();
}
PHP处理错误的方式有以下几种:
1.die语句
2.自定义错误处理函数
3.自定义错误触发器
4.错误日志的方式
1.die语句
die语句终止简本,等价于exit语句,但是die可以输出提示语句。
如:
[php] view
plain copy
if(!file_exists("a.txt")){
die("文件不存在");
}
也可以写成
[php] view
plain copy
file_exists("a.txt") or die("文件不存在");
die之后的语句不会被执行。
2.自定义错误处理函数(系统识别)
[php] view
plain copy
$fp=fopen("a.txt","r");
对于这句代码,系统会打印出warning:.....这是系统默认的处理。我们可以通过自定义处理方式处理错误,而不是交由系统默认处理。
【补充】 php中的错误级别:
[php] view
plain copy
E_WARNING , E_NOTICE ,E_USER_ERROR,E_USER_WARNING,E_USER_NOTICE, E_RECOVERABLE_ERROR , E_ALL
等
自定义的错误处理函数必须至少接受2个参数(error level,error message),可最多接受5个参数,其余3个都为可选参数(file,line number,error context)。
[php] view
plain copy
function my_error($errno ,$errmsg){
}
通过set_error_handler("my_error",错误级别);让系统覆盖原来的默认处理函数,使用指定的函数处理指定错误级别的错误。
此处的错误级别一般为不以E_USER开头的错误级别。
这种处理方式是系统自动匹配识别出现错误属于哪种级别。
3.错误触发器(用户识别)
现有需求:如果年龄大雨120,则认为程序错误。
按照传统的方式:
[php] view
plain copy
if($age>120){
exit();
}
触发器方式:
先自定义错误触发器,错误触发器的定义和错误处理函数的定义相似,其参数一样,也是必须至少接受2个参数(error level,error message),可最多接受5个参数,其余3个都为可选参数(file,line number,error context)。
[php] view
plain copy
function my_error($errno,$errmsg){
}
再通过set_error_handler("my_error",错误级别)设置错误触发器触发级别以及处理函数。该处的错误级别一般是以E_USER开头的错误级别。
最后在程序中调用trigger_error("my_error",同时指定错误级别)。如果,指定的该错误级别与设置触发的级别不同,则不会触发错误处理函数;如果相同,才会触发错误处理函数。
[php] view
plain copy
function my_error($errno,$errmsg){
}
set_error_handler("my_error",E_USER_WARNING);
if($age>120){
trigger_error("my_error",E_USER_WARNING);//级别相同,会触发错误处理函数
trigger_error("my_error",E_USER_NOTICE);//级别不相同,不会触发错误处理函数
}
这种处理方式是需要人工手动指定出现的错误的级别。
相关文章推荐
- php 解决和避免form表单重复提交的方法
- matplotlib--Legend
- 内容提供者:ContentProvider
- php编程安全指南
- yii2.0 修改控制器默认方法记录 (basic版本)
- Sublime Text 如何连接 FTP/SFTP ——图文详细教程
- 单例模式PHP
- header("Location:login.php")
- 修改PHP上传文件大小限制的方法
- php调用mysql存储过程的详解
- php 打包下载zlib函数
- Composer安装文档
- php md5 16位 问题
- php缓存技术总结
- php反射机制
- php伪静态
- [php学习二]基本语法练习一
- 新元素之video,audio,meter,datalist,keygen,output
- PHP 设计模式
- Helpers\PHPMailer