代码如下,已经注册了错误处理函数register_shutdown_function都没有执行,很奇怪
error_reporting(-1);
ini_set('display_errors', 1);
set_error_handler(function(){
echo "error handler execute";
}, E_ALL);
set_exception_handler(function(){
echo "exception handler execute";
});
register_shutdown_function(function(){
echo "shutdown function execute";
});
try{
0$a;
}catch(exception $e){
echo "catch exception";
}finally{
echo "finally ";
}
执行结果:
Parse error: syntax error, unexpected '$a' (T_VARIABLE) in C:\Users\mao\Documents\php\index.php on line 18
PHP Parse error: syntax error, unexpected '$a' (T_VARIABLE) in C:\Users\mao\Documents\php\index.php on line 18
[Finished in 0.1s]
0$a是故意写的,为什么异常都没有被处理呢?
可以试试PHP7的try{}catch(Error){}
http://php.net/manual/en/clas...
语法错误是最先被系统做出警告,属于系统级别的异常,系统一警告,整个程序根本就都没运行过。
首先要明白异常跟错误是不一样的,异常是出现正常逻辑之外的情况,而错误是指运行时出错了!一旦出现错误,整个代码就不会再执行,你的程序也就挂了。而出现异常你可以使用try catch捕获到,且程序还可以继续运行!
很明显,你的代码有语法错误,那么这段程序根本执行不了,也就是说你这里是触发了一个错误而不是异常。那么如何达到你想要的效果呢?首先就要解决语法问题,看下面代码