PHP中的错误处理机制
常见的三种错误:
1.Notice :通知性错误,最小的错误,当发生通知性错误时,会弹出一个提示信息。不会中断代码的执行。
错误代码:
#例如
Notice: in I:\www\abc\error.php on line
2.Warning:警告性错误,当发生警告性错误后,会弹出一个警告信息,他不会中断程序向下运行。
#例如
Warning: in I:\www\abc\error.php on line
3.Error:致命性错误,当发生致命性错误后,会弹出一个致命错误信息,中断程序执行。
#例如
Fatal error: in I:\www\abc\error.php on line
上面是常见的3中PHP中的错误,跟多详细错误看下面代码:
#查看更多错误,可以调用系统函数get_defined_constants这个函数
#简答的展示一些: echo "<pre>";
var_dump(get_defined_constants()); array() {
["E_ERROR"]=>
int()
["E_RECOVERABLE_ERROR"]=>
int()
["E_WARNING"]=>
int()
["E_PARSE"]=>
int()
["E_NOTICE"]=>
int()
["E_STRICT"]=>
int()
["E_DEPRECATED"]=>
int()
["E_CORE_ERROR"]=>
int()
["E_CORE_WARNING"]=>
int()
["E_COMPILE_ERROR"]=>
int()
["E_COMPILE_WARNING"]=>
int()
["E_USER_ERROR"]=>
int()
["E_USER_WARNING"]=>
int()
["E_USER_NOTICE"]=>
int()
["E_USER_DEPRECATED"]=>
int()
["E_ALL"]=>
int()
["DEBUG_BACKTRACE_PROVIDE_OBJECT"]=>
int()
["DEBUG_BACKTRACE_IGNORE_ARGS"]=>
int()
["TRUE"]=>
bool(true)
["FALSE"]=>
bool(false)
["NULL"]=>];
~~~~还有更多。
错误的触发:
可以分为两种:
1.系统自动触发
系统自动检查程序的编译以及执行,在出错的时候,自动给出错误提示。
2.手动触发:
PHP中手动触发可以调用系统函数,一般用来调试相应的错误程序,一般是用户级别的错误。
触发的函数:trigger_error
第一个参数可以设置错误提示信息,第二个参数可以设置错误的级别
E_USER_NOTICE:触发通知级别错误,最低级别的用户错误
E_USER_WARNING:触发警告级别的错误,后续代码继续执行
E_USER_ERROR:触发致命错误级别的错误,后续代码终止执行。
错误显示开关:
在php.ini中配置display_errors选项,默认为on,显示错误提示,在开发阶段建议设置on,便于项目的调试。产品上线设置为off,用户体验好,安全性高,该设置一直有效。
也可以在脚本中执行ini_set函数,设置dispaly_errors的值,只能在脚本生命周期内,无法修改php.ini文件时,可以采用该方式,脚本周期结束,选项恢复。
设置错误显示的级别:
设置错误报告的级别后,可以决定来显示什么级别的错误信息。
在php.ini中配置error_reporting选项,默认设置为显示所有的错误:
设置错误报告的级别后,可以决定来显示什么级别的错误信息。
E_ALL:显示所有的错误
E_NOTICE:显示通知性的错误
E_WARING:显示警告性的错误
E_ERROR:显示致命性的错误
同样也可以调用ini_set函数设置。
错误日志:
错误日志设置:
一般项目上线需要记录错误日志,用于检查系统错误,默认日志开关开启。
错误日志的默认路径
apache:
apache/logs/error.log
Nginx:
/var/log/nginx/error.log
自定义错误日志存储路径:
ini_set('error_log','路径');
只能设置一次有效,脚本生命周期结束,记录结束。
自定义错误处理处理器:
出现错误时,默认使用系统的错误处理机制来提示错误信息,可以提示什么级别的错误,错误提示字符串,发生错误的文件以及行号等。
可以自定义设置错误提示:
写一个自定义错误处理函数
my_error
有四个参数
$errCode:错误代号
$errStr:错误提示
$errFile:错误文件
$errLine:错误行号
默认不会调用,必须调用set_error_handler函数设置为系统自动调用这个函数。
先到这把,欢迎继续补充~~~,本人微信meng199898,转帖需备注
PHP中的错误处理机制的更多相关文章
- javascript中的错误处理机制
× 目录 [1]对象 [2]类型 [3]事件[4]throw[5]try[6]常见错误 前面的话 错误处理对于web应用程序开发至关重要,不能提前预测到可能发生的错误,不能提前采取恢复策略,可能导致较 ...
- Android IOS WebRTC 音视频开发总结(七五)-- WebRTC视频通信中的错误恢复机制
本文主要介绍WebRTC视频通信中的错误恢复机制(我们翻译和整理的,译者:jiangpeng),最早发表在[这里] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blac ...
- php 中的错误处理机制
php 里有一套错误处理机制,可以使用 set_error_handler 接管 php 错误处理,也可以使用 trigger_error 函数主动抛出一个错误. set_error_handler( ...
- windows核心编程---第一章 谈谈windows中的错误处理机制
我们写的函数会用返回值表示程序执行的正确与否,使用void,就意味着程序一定不会出错.Bool类型标识true时为真,false时为假.其他类型根据需要可以定义成不同意义. Win ...
- 《windows核心编程系列》一谈谈windows中的错误处理机制
错误处理 我们写的函数会用返回值表示程序执行的正确与否,使用void,就意味着程序一定不会出错.Bool类型标识true时为真,false时为假.其他类型根据需要可以定义成不同意义. Windows除 ...
- 学习PDO中的错误与错误处理模式
在 PDO 的学习过程中,我们经常会在使用事务的时候加上 try...catch 来进行事务的回滚操作,但是大家有没有注意到默认情况下 PDO 是如何处理错误语句导致的数据库操作失败问题呢?今天,我们 ...
- php中错误处理机制
php中,异常处理机制是有限的,无法自动抛出异常,必须手动进行,并且内置异常有限. php把许多异常看作错误,这样就可以把这些异常想错误一样用set_error_handler接管,进而主动抛出异常. ...
- PHP中的错误处理、异常处理机制详解
在编写PHP程序时,错误处理是一个重要的部分.如果程序中缺少错误检测代码,那么看上去很不专业,也为安全风险敞开了大门 例: <?php $a = fopen('test.txt','r'); / ...
- linux系统编程之错误处理机制
在讲解liunx错误处理机制之前我们先来看一段代码: #include<sys/types.h> #include<sys/stat.h> #include<fcntl. ...
随机推荐
- UE4 UnLoadStreamLevel
今天测试发现一个bug记录一下,如果把某一个子关卡的加载方式设置为Always Loaded时,调用UnloadStreamLevel时不会执行Completed后面的节点,也就是一直没有完成.
- 最强PostMan使用教程(1)
最近需要测试产品中的REST API,无意中发现了PostMan这个chrome插件,把玩了一下,发现postman秉承了一贯以来google工具强大,易用的特质.独乐乐不如众乐乐,特此共享出来给大伙 ...
- 基于VUE选择上传图片并在页面显示(图片可删除)
demo例子: 依赖文件 : http://files.cnblogs.com/files/zhengweijie/jquery.form.rar HTML文本内容: <template> ...
- ASP.NET网络爬虫小研究 HtmlAgilityPack基础,爬取数据保存在数据库中再显示再自己的网页中
1.什么是网络爬虫 关于爬虫百度百科这样定义的:网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些 ...
- asp.net -mvc框架复习(2)-创建ASP.NET MVC 第一个程序以及MVC项目文件夹说明
建议vs2013或2013以上版本的vs,要是跨平台的话最好用vs2015或vs2017的asp.net mvc core . 1.创建ASP.NET MVC 第一个程序 打开vs2013->文 ...
- oracle 配置 自启动 和 关闭
今天在看oracle自启动脚本,突然有点时间,总结一下!!! 第一次写博客,大家随便看看就好,有错误麻烦提醒下,不喜欢别喷,主要是锻炼自己,形成写博客的好习惯. 刚毕业,现在还没转正,在干运维和自学d ...
- python_继承supper错误
问题: qs = super(BnnerCourseAdmin, self).queryset() TypeError: super(type, obj): obj must be an instan ...
- sqlserver存储过程及mybatis调用——待续
创建带输入参数存储过程 use yanantestgoif exists (select * from sys.objects where name='yanan')drop procedure ya ...
- Java虚拟机栈和本地方法栈
Java虚拟机栈的特征 线程私有 后进先出(LIFO)栈 存储栈帧,支持Java方法的调用.执行和退出 可能出现OutOfMemoryError异常和StackOverflowError异常 Java ...
- linkin大话面向对象--属性详解
成员变量和局部变量 成员变量: 1.在一个类中,任何方法之外定义的变量: 2.从面向对象的思想来说我们又把实例变量看成一个类的属性. 3.实例变量在没有符初值时系统会自动帮我们做初始化 ...