php捕获parse error 失败?
漂亮男人
漂亮男人 2017-05-16 13:00:20
0
3
423

代码如下,已经注册了错误处理函数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是故意写的,为什么异常都没有被处理呢?

漂亮男人
漂亮男人

Antworte allen(3)
洪涛

可以试试PHP7的try{}catch(Error){}

http://php.net/manual/en/clas...

ParseError extends Error 
PHPzhong

语法错误是最先被系统做出警告,属于系统级别的异常,系统一警告,整个程序根本就都没运行过。

迷茫

首先要明白异常跟错误是不一样的,异常是出现正常逻辑之外的情况,而错误是指运行时出错了!一旦出现错误,整个代码就不会再执行,你的程序也就挂了。而出现异常你可以使用try catch捕获到,且程序还可以继续运行!

很明显,你的代码有语法错误,那么这段程序根本执行不了,也就是说你这里是触发了一个错误而不是异常。那么如何达到你想要的效果呢?首先就要解决语法问题,看下面代码

    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{
        echo $a;
    }catch(exception $e){
        echo "catch exception";
    }
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage