php错误处理和异常处理
PHP错误处理有两种:标准的错误处理和异常(OOP语法新出现的错误处理机制)
标准错误是由:错误等级,错误信息,错误发生文件,与错误发生行号组成。php提供了多种错误等级,用来描述错误的重要程度。
标准错误两种触发形式:
php自动触发: php检测到存在一个错误,则会将错误触发
用户脚本触发:
利用内置函数trigger_error('错误消息','错误级别');
错误级别只能使用常量来表示:默认是notice级别:E_USER_NOTICE
警告:E_USER_WARNING,致命错误:E_USER_ERROR
处理:错误报告
将错误消息直接输出到标准输出(标准错误)
这个功能是可以通过php的配置进行控制
error_reporting 控制的是哪种级别的错误应该被报告
display_errors 是否开启页面错误功能(开启则在页面输出,不开启则不输出)
以上两个配置都支持在用户脚本修改:通过ini_set('配置项的名',值)
显示所有错误:E_ALL|E_STRICT ,其他:E_NOTICE,E_WARING,E_ERROR
常用的在开发时,开启全部: ini_set('display_errors',E_ALL|E_STRICT);
在生产时,关闭所有:ini_set('display_errors',0)
错误日志:
一旦发生错误,将信息记录到日志文件内
是否开启错误日志: ini_set('log_errors',1);
错误日志的位置: ini_set('error_log',d:/error.log);
注意:错误日志和错误报告是可以同时存在的。
自定义错误处理器:
用户自定义一个函数,一旦错误发生,执行用户的函数来处理函数,用户自定义的函数,称为错误处理器
设置一个用户定义的错误处理函数:set_error_handler("用户自定义函数")
关于error级别的处理,致命错误是不能被处理的(不能从错误中恢复)
如果自定义了用户的错误处理器,E_USER_ERROR是可以被恢复的
一旦定义用户错误处理器,系统的错误处理方式是否还会执行?
不会,如果这个用户的自定义处理器返回false,则表示用户处理完毕,交由系统的继续处理
在项目中通常通常分为开发模式和生产模式:
开发模式,显示所有的错误报告:
ini_set('error_reporting',E_ALL|E_STRICT);
ini_set('display_errors',1);
ini_set('log_errors',0);
生产模式,屏蔽所有的错误报告,但是记录错误日志
ini_set('display_errors',0);
ini_set('error_log','d:/error.log');
ini_set('log_errors',1);
错误处理之异常
异常是一种php对oop语法,提供的典型的错误的处理方法,在oop语法中,大家可以在发生问题,通过异常的方式,进行管理,异常也是一个错误,只不过是将错误信息放置在一个对象中,异常有个前提,保证语法是正确的
异常的处理由发生和处理组成:
所谓发生:指的的是抛出一个异常,利用throw 完成
所谓处理:一旦异常出现,如何得到并处理这个异常,由两个阶段组成,监听(try)和捕获(catch)
自定义异常处理器:(异常处理器就是一个对象)
如果说一个异常被抛出了,但是没有被捕获,就会触及一个E_ERROR级错误,可以利用异常的自定义处理器完成对未捕获异常的处理
创建自定义的错误处理类:
1,Myception类继承了Exception类的属性和方法,是原异常类的扩展
2,创建errorMessage 方法,如果email不合法,则该方法返回错误
3,执行try代码块,由于email不合法,抛出异常
4,catch 代码块捕获异常,并显示错误消息
set_exception_handler() 设置一个用户定义的异常处理函数
通俗的讲:就是当你的程序需要抛出一个异常的时候调用哪个自定义的函数,就这么简单
php错误处理和异常处理的更多相关文章
- [python]错误检测及异常处理try-except
1. 简介 要给代码添加错误检测及异常处理,只需要将其封装在try-except中. try:通常的代码 except:处理错误和异常的代码 2. 示例 import os try: path = ' ...
- PHP中的错误处理、异常处理机制详解
在编写PHP程序时,错误处理是一个重要的部分.如果程序中缺少错误检测代码,那么看上去很不专业,也为安全风险敞开了大门 例: <?php $a = fopen('test.txt','r'); / ...
- PHP基础之 错误处理 及 异常处理
错误处理: 1.使用die()方法,结束语句的执行,并输出错误消息 2.自定义错误和错误触发器 自定义错误处理函数(系统有默认的错误处理函数,自定义的错误处理会覆盖默认的处理函数) ========= ...
- PHP中的错误处理和异常处理
错误处理: 1.语法错误 2.运行时的错误 3.逻辑错误 错误报告: 错误E_ERROR 警告E_WARNING 注意E_NOTICE 开发 ...
- PHP错误处理及异常处理笔记
给新人总结一下PHP的错误处理. PHP提供了错误处理和日志记录的功能. 这些函数允许你定义自己的错误处理规则,以及修改错误记录的方式. 这样,你就可以根据自己的需要,来更改和加强错误输出信息以满足实 ...
- java程序错误类型及异常处理
一.程序的错误类型 在程序设计中,无论规模是大是小,错误总是难免的.程序的设计很少有能够一次完成,没有错误的(不是指HelloWorld这样的程序,而是要实现一定的功能,具备一定实用价值的程序),在编 ...
- python的错误类型和异常处理
# isinstance() # 判断实例a是否属于类b # issubclass() # 判断类a是否为类b的派生类 # 异常处理 try: pass #Exception是错误类型,能catch到 ...
- 一,php的错误处理和异常处理
php程序中如果语法或逻辑错误,会引起php默认错误处理机制,不会引起异常处理机制,只有在程序中throw抛出异常后,如果没有catch捕捉异常,默认调用php默认异常处理. php有默认错误机制和默 ...
- 小议C#错误调试和异常处理
在程序设计中不可避免地会出现各种各样的错误,在编写代码时须要尽量避免. 在处理错误时,首先应该分析错 误的类型,找出出错的原因才干解决错误. 错误的分类 watermark/2/text/aHR0cD ...
随机推荐
- ARP 实现
ARP 实现 现在我们介绍一下arp的实现,内核版本2.6.24. [数据结构] 协议栈通过ARP协议获取到的网络上邻居主机的IP地址与MAC地址的对应关 系都会保存在这个表中,以备下次与邻居通讯时使 ...
- INFORMATION_SCHEMA.INNODB_TRX 详解
从192.168.11.186 上登录 192.168.11.185 数据库: root 13246 547 0 13:39 pts/1 00:00:00 mysql -uroot -px xxxxx ...
- MySQL show status详解
http://www.sandzhang.com/blog/2010/04/07/mysql-show-status-explained-detail/ 要查看MySQL运行状态,要优化MySQL运行 ...
- oracle 10g WMSYS.WM_CONCAT 函數的用法
select t.rank, t.Name from t_menu_item t; 10 CLARK 10 KING 10 MILLER 20 ADAMS 20 FORD 20 JONES 20 SC ...
- Hay Points
Hay Points TimeLimit: 1 Second MemoryLimit: 32 Megabyte Totalsubmit: 1022 Accepted: 602 Descript ...
- 关于 Unity UGUI 中修改 Mask 组件下 Image 等子节点组件的材质无效的问题
前几天同事做了一个效果,希望在原本使用了遮罩组件 Mask 的技能图标(让技能图标变成圆形)上在添加一个置灰的功能,但问题来了:因为是动态根据游戏中玩家的条件才动态置灰,以修改 Mask 下子节点 I ...
- Kia's Calculation(HDU 4267)
Problem Description Doctor Ghee is teaching Kia how to calculate the sum of two integers. But Kia is ...
- 如何让虚拟目录里面的webconfig不继承网站的设置
在一个网站 中国红木网 下 建一个虚拟目录,结果虚拟目录系统会调用 中国红木网 上的web.config, 在网上找到以下解决方案 在(如根目录)所在的Web.config加上 如:<locat ...
- sql日志框架log4jdbc的AOP式使用
log4jdbc.log4j2 参考:1. http://badqiu.iteye.com/blog/743100 2. https://code.google.com/p/log4jdbc/ 3 ...
- pathmunge /etc/profile
pathmunge () { case ":${PATH}:" in *:"$1":*) ;; *) if [ "$2" = "a ...