php错误和异常处理笔记

关于php的错误和异常处理的使用最近终于搞清楚了,下面是简要笔记:
0、程序处理的原则:

  0、首先是中断,即粗暴的停止程序,并且不提供错误信息,在php中就是die()和exit(),只是简单的输出一条消息,比粗暴中断有了一定进步;

  1、然后是错误处理,就是在中断基础上增加关于错误的信息,以便调试,就是php中默认的错误处理方式(缺点见下);

  2、为了弥补缺点,php允许程序员自定义错误处理函数;
1、php自身的错误处理方式对于web用户是不友好的(warning级别的错误不影响后续的程序运行,而error和notice级别的错误会终止程序的运行),而且会暴露程序的一些信息。所以真正的php程序是屏蔽所有报错信息,并自定义自己的处理函数。
2、这个自定义函数形如:handler(int $errno,string $errstr [,string $errfile [,int $errline [,array $errcontext ]]]),并且需要通过set_error_handler进行调用。handler函数的参数是由php内部传入的,就是原本传给内部错误处理函数的参数。
3、注意set_error_handler函数可以多次使用,会覆盖上一次的错误处理函数,可以使用restore_error_handler函数重新指向上一个错误处理函数

4、对应的还有set_exception_handler和restore_exception_handler函数,区别是这两个函数是用来处理异常的。异常是php5中定义的,和其他语言try,catch,finally,throw结构相似。throw用于抛出异常,try用于检测一段代码并能够检测到异常,然后由catch结构进行处理。而这两个函数是用于处理未被try检测部分代码的异常信息。

那php异常和错误有何区别那?

php的异常是在php5版本中出现的,基础是Exception(所有异常基类)和ErrorException两个类。

下面解释了为何需要异常处理机制:
当函数遇到return时会结束运行并返回,且返回值只有一个,可以据此来做判断
但当new一个新对象时,即使类内某一部分出错,同样会继续运行并返回一个完整的对象(就像汽车即使漏油也是汽车,出错不能发现)
所以为了查看对象形成过程中是否出错需要异常处理机制
!!!异常处理机制通常用于处理类中的错误,但是也可以处理函数中的错误

那么在实际的php项目中,是怎样工作的呢?

1、设置报错级别为0,即不对用户报错

2、设置调试标识,开发过程中对程序员显示错误信息以便调试;对用户则显示错误页面即可

3、有关错误信息的设置是三个函数的组合:
        register_shutdown_function();
        set_error_handler();
        set_exception_handler();

参考:http://bbs.phpchina.com/thread-212378-1-1.html

  http://yanue.net/post-99.html

时间: 2024-08-29 03:28:45

php错误和异常处理笔记的相关文章

《Cortex?-A系列编程者指南(V3.0)》第12章<异常处理>笔记

在本章,我们看看ARM处理器如何响应异常.异常是任何需要挂起正常执行转而运行与每个异常类型相关联软件(称为异常处理程序)的条件. 12.1 异常的类型 如我们在第四章看到,A系列和R系列架构支持七种处理器模式,六种特权模式(称为快速中断模式.外部中断模式.管理模式.中止模式.未定义模式和系统模式),一种非特权模式(用户模式).如果虚拟化扩展和安全扩展被实现,Hyp和Monitor模式可以被添加到列表.当前模式在软件控制下或处理一个异常时修改. 然而,非特权的用户模式只能通过产生一个异常来切换到另

PHP的错误和异常处理

PHP的错误和异常处理 任何程序员在开发时都可能遇到过一些失误,或其他原因造成错误的发生.当然,用户如果不愿意或不遵循应用程序的约束,也会在使用时引起一些错误发生.PHP程序的错误发生一般归属于下列三个领域. Ø  语法错误 语法错误最常见,并且最容易修复.例如,遗漏了一个分号,就会显示错误信息.这类错误会阻止脚本执行.通常发生在程序开发时,可以通过错误报告进行修复,再重新运行. Ø  运行时错误 这种错误一般不会阻止PHP脚本的运行,但是会阻止脚本做希望它所做的任何事情.例如,在调用heade

【Go语言】错误与异常处理机制

①error接口 Go语言中的error类型实际上是抽象了Error()方法的error接口 type error interface { Error() string } Go语言使用该接口进行标准的错误处理. 对于大多数函数,如果要返回错误,大致上都可以定义为如下模式,将error作为多种返回值中的最后一个,但这并非是强制要求: func Foo(param int)(n int, err error) { // ... } 调用时的代码建议按如下方式处理错误情况: n, err := Fo

PHP 错误与异常 笔记与总结(10)错误处理器测试

关联文件:myErrorHandler.php (上一篇) 先测试通知级别的错误的自定义处理: testErrorHandler.php <?php require_once 'myErrorHandler.php'; error_reporting(-1); set_error_handler(array('myErrorHandler', 'deal')); //通知级别错误 echo $notice; 运行,在 D:\practise\php\From\notice 生成 noticeLo

再谈PHP错误与异常处理

博客好久没有更新了,实在惭愧,最近在忙人生大事,哈哈!这段时间没有看什么新的东西,结合项目中遇到的PHP异常处理问题,我又重新梳理了之前模糊的概念,希望对大家理解PHP异常处理有所帮助. 请一定要注意,没有特殊说明:本例 PHP Version < 7 说起PHP异常处理,大家首先会想到try-catch,那好,我们先看一段程序吧:有一个test.php文件,有一段简单的PHP程序,内容如下,然后命令行执行:php test.php 1 <?php 2 $num = 0; 3 try { 4

php错误以及常用笔记

//语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任何输出. /* [命名规则] */ 常量名 类常量建议全大写,单词间用下划线分隔 // MIN_WIDTH 变量名建议用下划线方式分隔 // $var_name 函数名建议用驼峰命名法 // varName 定界符建议全大写 // <<<DING, <<<'DING' 文件名建议全小写和下划线.数字 // func_name.php 私有属性名.方法名建议加下划线 // private

PHP常用功能块_错误和异常处理 — php(32)

一.错误和异常处理 1.1 错误类型和基本的调试方法PHP程序的错误发生一般归属于下列三个领域: 语法错误:语法错误最常见,并且也容易修复.如:代码中遗漏一个分号.这类错误会阻止脚本的执行. 运行时错误:这种错误一般不会阻止PHP脚本的执行,但会阻止当前要做的事情.输出一条错误,但php脚本继续执行 逻辑错误:这种错误最麻烦,既不阻止脚本执行,也不输出错误消息.一个异常则是在一个程序执行过程中出现的一个例外,或是一个事件,它中断了正常指令的运行,跳转到其他程序模块继续执行. PHP的错误报告级别

【软件构造】第七章第二节 错误与异常处理

第七章第二节 错误与异常处理 本节关注:Java中错误和异常处理的典 型技术--把原理落实到代码上! Outline: Java中的错误和异常(java.lang.throwable) 异常 Runtime异常与其他异常(Exception) Checked异常和unchecked异常 checked异常的处理机制 自定义异常 Notes: ## Java中的错误和异常 [Throwable] Java.lang.throwable Throwable 类是 Java 语言中所有错误或异常的超类

软件构造 第七章第二节 错误与异常处理

第七章第二节 错误与异常处理 内部错误:程序员通常无能为力,一旦发生,想办法让程序优雅的结束 异常:你自己程序代码发生的,可以捕获处理 [Error] Error类描述很少发生的Java运行时系统内部的系统错误和资源耗尽情况(例如,VirtualMachineError,LinkageError). 对于内部错误:程序员通常无能为力,一旦发生,想办法让程序优雅的结束 Error的类型: 用户输入错误 例如:用户要求连接到语法错误的URL,网络层会投诉. 设备错误 硬件并不总是做你想做的. 输出器