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 ...
随机推荐
- 行为树实现AI逻辑
http://blog.csdn.net/kenkao/article/details/6099966 http://www.aisharing.com/archives/99 http://www. ...
- Python Monkey patch猴子补丁
monkey patch (猴子补丁) 用来在运行时动态修改已有的代码,而不需要修改原始代码. 简单的monkey patch 实现:[python] #coding=utf-8 def orig ...
- 1057 - Collecting Gold (状态压缩DP)
题目大意: 给你一个矩阵,'x'是你的起始位置, 'g'是宝藏的位置,问最少多少步可以把所有的宝藏取完,并且最后返回起始位置. 注意:没有宝藏的时候输出 0 =================== ...
- linux下阅读源代码的工具
说来真是惭愧呀.一直在用VIM 做开发.却不知道VI 里还有这么好使的工具.以前一直都是用: find -type f -print | xargs grep -i **** 在源代码里查找. 原来L ...
- structs 源码示例
http://blog.csdn.net/wwwihpccn/article/details/5725518
- HDOJ -- 4699
Editor Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Su ...
- ARM学习笔记5——程序状态寄存器
当前程序状态寄存器CPSR可以在任何位处理器模式下被访问,它包含条件码标志.中断控制.当前处理器模式以及其他状态和控制信息.CPSR的结构图如下: 一.条件标志位 CPSR最高4位:N(Negativ ...
- JavaScript---网络编程(9-2)--DHTML技术演示(2-2)-表格加强
对上篇博客的最后那个表格隔行高亮显示加了个功能,鼠标监听和年龄从小到大排序. 演示代码: <html> <head> <title>DHTML技术演示---表格中页 ...
- maven构建带版本号和日期的war包名
21166312 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !import ...
- YII 小模块功能
//1,使用updateCounters()来更新计数器字段. Book::model()->updateCounters(array('download_count'=>1),':id= ...