PHP错误和异常处理

错误的分类

  1. 语法错误

这种错误是最常见的错误,而且这种错误也是最容易修复的错误

 

  1. 运行错误

这种错误往往是指算法(所谓算法,就是指解决问题的方法)有问题,造成了内存泄漏。这种错误在刚开始的时候是不会阻止程序的运行的,但是随着程序运行的时间的增长,程序最终造成崩溃

 

  1. 逻辑错误

这种错误往往是最麻烦的,它不会阻止程序的运行,而且也不会显示错误信息

 

上面的错误,本来是想在$i等于5的时候输出World,但是由于错写了==,所以永远只会输出Hello

 

PHP中错误的级别

PHP中,错误会被被分成不同的等级的,如下图:

 

 

这里首先回顾一个函数gettype(),用于获取变量的类型

 

 

利用该函数来得到不同的错误类型

 

效果:

 

 

总结:从上面的实验可以看到,noticewarning级别的错误不会影响下面脚本的执行,但是error级别的错误,会影响脚本的执行

 

 

调整PHP中的错误级别

所谓调整PHP中的错误级别,就是指显示自己需要的错误报告

步骤如下:

  1. 打开PHP的配置文件,移动到error_reporting的位置

 

  1. error_reporting的值修改为自己想要的错误报告级别

需要注意的是不要将原来的配置文件的值修改,而是将其注释掉,然后在下面重新书写自己的值。好处在于一旦出现什么问题,可以快速的还原原来的配置

  1. 重启apache

 

需求:显示除了E_NOTICE以外的错误类型

有一个~的符号,代表除了该级别以外

 

效果:

 

 

虽然上面我们是通过修改配置文件的方式来修改的错误级别报告,但是,一般来讲,配置文件是不允许轻易修改。所以,在PHP里面,还专门给我们提供了一个函数error_reporting

 

效果:

 

 

 

效果:

 

 

trigger_error()函数

该函数是用来自定义错误类型的。该函数可以抛出一个自定义的错误信息。

这个函数接收两个参数(要抛出的错误信息,错误等级)

 

效果:

 

 

 

自定义错误处理

这个是指自定义错误报告怎么处理。系统默认的错误报告处理的方式为:哪里出错,立马把错误报告显示出来。

Set_error_handler(),该函数可以接收两个参数,第一个参数是一个错误报告处理的回调函数,第二个参数是可选的,是定义哪一种错误级别使用该自定义函数。

 

效果:

 

 

需要注意的是:fatal error级别的错误,属于重大错误。系统是不可能将这么重大的错误交给用户自定义函数来处理的

 

效果:

 

 

Set_error_handler函数的第二个参数为指定哪一种级别使用自定义函数,默认是E_ALL

 

效果:

 

 

 

错误日志

对于PHP开发者来讲,如果一旦项目上线,那么肯定是不能显示任何的错误报告的。但是虽然不显示,并不代表没有错误。这个时候就需要将错误报告写在错误日志里面

关闭错误报告:在PHP配置文件里面,有一个display_errors,默认值为On,将其修改为Off就可以了

 

 

虽然关闭了错误报告显示,但是并不代表没有错误,我们需要将错误报告写在错误日志里面,如果要写错误日志,需要先将PHP配置文件里面的log_errors开启,默认就是开启了的

 

 

有一个error_log条目:用来指定错误日志存储的位置

 

 

接下来一旦有错误发生,错误报告就会被写入到指定的文件里面

 

错误日志:

 

需要注意的是:错误日志的路径是可以根据自己的实际需求来进行修改的

 

 

异常处理

异常和错误并不是同一个东西。异常是指一个程序在运行过程中出现一个意外或者事件。中断了正常指令的执行,跳转到了其他模块继续执行。

PHP里面,异常处理使用try…catch…

Try:代表尝试执行,并且捕获异常

Catch:代表异常出现时的补救方案

 

异常是通过throw关键字来抛出的。抛出异常以后,throw下面的代码是不会被执行的,会直接进入catch这个补救措施

 

如果想要看到异常的信息

可以通过getMessage()方法来进行查看

 

 

注意点:需要进行异常捕获的代码,必须写在try代码块里面,trycatch是成对出现,并且trycatch之间不能有任何的其他代码

posted @ 2017-08-28 12:53  苦中作乐。  阅读(114)  评论(0)    收藏  举报