异常是指程序运行中不符合预期情况以及与正常流程不同的状况。错误则属于自身问题,是一种非法语法或者环境问题导致的、让编译器无法通过检查设置无法运行的情况。
php只有在你throw 一个异常后,才能用try…catch来捕获异常(一般情况下如此,也有部分异常可以自动捕获)。
历史原因导致php的异常处理是不足的,绝大多数情况下,无法自动抛出异常,必须使用if…else先进行判断,再手动抛出异常。
|
|
fetal error这样的错误无法捕获,也无法在发生后恢复流程处理,但是可以使用register_shutdown_function()函数在程序终止或die时触发一个函数,给程序带来一个短暂的回光返照。在php4时,不支持析构函数,也常用于模拟实现析构函数。
Parse error级别的错误,除了修改ini文件,将错误信息写到日志中,什么也做不了。
无论是错误还是异常,都可以使用handler接管系统已有的处理机制。