在包含一个找不到的问题的时候, 会前后抛出俩个错误,
1....WARNING : 在PHP试图打开这个文件的时候抛出.2. E_COMPILE_ERROR : 从PHP打开文件的函数返回失败以后抛出....所以, 在onError中, 只能捕获到第一个WARNING错误, 而在onError中抛出的异常, 为什么没有被默认exception_handler捕获呢?
这就要说说PHP的异常机制了....原来在PHP中, 当有异常被throw的时候, 会跳到每一个op array的最后一行, 来执行这条ZEND_HANDLE_EXCEPTION, 伪码如下:
void on_throw_exception...而在ZEND_HANDLE_EXCEPTION中, 会判断这个异常是否在try catch中,
如果是 则把下一条要执行的op line, 置为第一个catch的op line, 并继续执行.如果不是