suchen

Heim  >  Fragen und Antworten  >  Hauptteil

php捕获parse error 失败?

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

漂亮男人漂亮男人2779 Tage vor449

Antworte allen(3)Ich werde antworten

  • PHP中文网

    PHP中文网2017-05-16 13:02:20

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

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

    ParseError extends Error 

    Antwort
    0
  • PHPz

    PHPz2017-05-16 13:02:20

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

    Antwort
    0
  • 迷茫

    迷茫2017-05-16 13:02:20

    首先要明白异常跟错误是不一样的,异常是出现正常逻辑之外的情况,而错误是指运行时出错了!一旦出现错误,整个代码就不会再执行,你的程序也就挂了。而出现异常你可以使用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";
        }

    Antwort
    0
  • StornierenAntwort