Alan Hou的个人博客

PHP的错误和异常处理

PHP的错误处理

1. 语法错误(会有错误报告提示)
2. 运行时的错误
3. 逻辑错误(较难发现,比如if语句中==用成了=)
错误报告:
错误 E_ERROR(致命错误,程序终止运行,需修改以确保程序的进一步运行)
警告 E_WARNING(较NOTICE严重一些,但不会影响程序的进一步运行)
注意 E_NOTICE(不影响程序的进一步运行)

在PHP代码中也可以控制错误报告输出级别,只需加上类似下面的代码(也可通过ini_set()函数设置php.ini中包括错误报告输出级别的所有设置):

开发阶段:开发时输出所有的错误报告,有利于进行程序调试;
运行阶段:不要让程序输出任何一种错误报告(不能让用户看到,懂技术的看到可能会受到黑客攻击, 不懂技术的看到会认为网站开发不专业);

为方便程序员监控,可将错误报告写入日志中
一、指定错误报告 error_reporting = E_ALL
二、关闭错误输出 display_errors = Off
三、开启错误日志功能 log_errors = On
1. 默认如果不指定错误日志位置,则默认写入WEB服务器的日志中
2. 为error_log选项指定 一个文件名(可写)则写入到该文件中
3. 写入到操作系统日志中error_log=syslog

PHP的异常处理

PHP的异常,是在程序运行过程中发生的意料之外的事,使用异常而改变脚本正常流程。
PHP5中的一个新的重要特性

1. 如果try中代码没有问题,则将try中代码执行完后就到catch后执行
2. 如果try中代码有异常发生,则抛出一个异常对象(使用throw),抛出给catch中的参数, 则在try中代码就不会再继续执行下去;直接跳转到catch中去执行, catch中执行完成, 再继续向下执行
注意: catch中可提示发生了什么异常,这不是主要我们要做的事,需要在catch中解决这个异常, 如果解决不了,则输出给用户
二、自己定义一个异常类
作用:就是写一个或多个方法解决当发生这个异常时的处理方式
1. 自己定义异常类,必须是Exception(内置类)的子类,
2. Exception类中的只有构造方法和toString()可以重写, 其它都是final
三、处理多个异常
自己定义功能类时如何在方法中抛出异常

退出移动版