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错误处理和异常处理的更多相关文章

  1. [python]错误检测及异常处理try-except

    1. 简介 要给代码添加错误检测及异常处理,只需要将其封装在try-except中. try:通常的代码 except:处理错误和异常的代码 2. 示例 import os try: path = ' ...

  2. PHP中的错误处理、异常处理机制详解

    在编写PHP程序时,错误处理是一个重要的部分.如果程序中缺少错误检测代码,那么看上去很不专业,也为安全风险敞开了大门 例: <?php $a = fopen('test.txt','r'); / ...

  3. PHP基础之 错误处理 及 异常处理

    错误处理: 1.使用die()方法,结束语句的执行,并输出错误消息 2.自定义错误和错误触发器 自定义错误处理函数(系统有默认的错误处理函数,自定义的错误处理会覆盖默认的处理函数) ========= ...

  4. PHP中的错误处理和异常处理

    错误处理:    1.语法错误    2.运行时的错误    3.逻辑错误 错误报告:        错误E_ERROR        警告E_WARNING        注意E_NOTICE 开发 ...

  5. PHP错误处理及异常处理笔记

    给新人总结一下PHP的错误处理. PHP提供了错误处理和日志记录的功能. 这些函数允许你定义自己的错误处理规则,以及修改错误记录的方式. 这样,你就可以根据自己的需要,来更改和加强错误输出信息以满足实 ...

  6. java程序错误类型及异常处理

    一.程序的错误类型 在程序设计中,无论规模是大是小,错误总是难免的.程序的设计很少有能够一次完成,没有错误的(不是指HelloWorld这样的程序,而是要实现一定的功能,具备一定实用价值的程序),在编 ...

  7. python的错误类型和异常处理

    # isinstance() # 判断实例a是否属于类b # issubclass() # 判断类a是否为类b的派生类 # 异常处理 try: pass #Exception是错误类型,能catch到 ...

  8. 一,php的错误处理和异常处理

    php程序中如果语法或逻辑错误,会引起php默认错误处理机制,不会引起异常处理机制,只有在程序中throw抛出异常后,如果没有catch捕捉异常,默认调用php默认异常处理. php有默认错误机制和默 ...

  9. 小议C#错误调试和异常处理

    在程序设计中不可避免地会出现各种各样的错误,在编写代码时须要尽量避免. 在处理错误时,首先应该分析错 误的类型,找出出错的原因才干解决错误. 错误的分类 watermark/2/text/aHR0cD ...

随机推荐

  1. ASP.NET MVC 下 引用阿里巴巴和IconFont字体路径404问题

    参考:http://stackoverflow.com/questions/28169365/font-wont-get-found-on-server-for-firefox# http://blo ...

  2. 《大数据Spark企业级实战 》

    基本信息 作者: Spark亚太研究院   王家林 丛书名:决胜大数据时代Spark全系列书籍 出版社:电子工业出版社 ISBN:9787121247446 上架时间:2015-1-6 出版日期:20 ...

  3. LintCode 38. Search a 2D Matrix II

    Write an efficient algorithm that searches for a value in an m x n matrix, return the occurrence of ...

  4. Scala:(3)数组

    要点: (1)长度固定使用Array,长度变化的则使用ArrayBuffer. (2)提供初始值时,不使用new. (3)用()访问元素 val a= new Array[String](10)//初 ...

  5. 字符串(AC自动机):HDU 5129 Yong Zheng's Death

    Yong Zheng's Death Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/O ...

  6. <转>如何将Chrome变成开发利器,开发者们在用这些插件

    Chrome 浏览器具有强大的跨平台能力以及丰富的扩展插件,一直是许多开发者的首要选择.而利用许多 Chrome 插件,开发者们在开发流程中能够极大地提高开发效率.我们就整理了十款开发者常用的 Chr ...

  7. Java如何将Exception.printStackTrace()转换为String输出

    package com.test1; import java.io.PrintWriter; import java.io.StringWriter; public class T010 { /** ...

  8. HDU-1874 畅通工程续 (最短路径启蒙题)

    hdu 1874比较基础,拿来练各种刚学会的算法比较好,可以避免好多陷阱,典型的最短路模板题 畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Memor ...

  9. 关于 Unity NavMesh 数据的导出和使用

    上周的工作重点转移到服务器寻路上来,刚刚做完没几天,总结一下,当时团队讨论的结果是使用 Unity 原生的 NavMesh 系统,然后将数据导出到服务器使用.我最初的思路是将导出的网格加载到服务器后, ...

  10. AIX项目总结_oracle_sqlloader_01

    近来一直在忙AIX的移行项目,但也因自己小小偷懒,所以到现在才开始记录.接下来,言归正传. 这个项目中,学习中了shell相关知识,从基本的语法命令(定义变量.特殊变量使用.循环控制.方法调用等)到l ...