PHP gagal menangkap ralat penghuraian?
漂亮男人
漂亮男人 2017-05-16 13:00:20
0
3
420

Kod adalah seperti berikut Fungsi pengendalian ralat register_shutdown_function tidak dilaksanakan, yang sangat pelik

error_reporting(-1); ini_set('display_errors', 1); set_error_handler(function(){ echo "pengendali ralat melaksanakan"; }, E_SEMUA); set_exception_handler(function(){ echo "eksekusi pengendali pengecualian"; }); register_shutdown_function(function(){ echo "fungsi penutupan jalankan"; }); cuba{ 0$a; }tangkap(kecuali $e){ echo "pengecualian tangkapan"; }akhirnya{ echo "akhirnya"; }

Hasil pelaksanaan:

Ralat hurai: ralat sintaks, '$a' (T_VARIABLE) yang tidak dijangka dalam C:\Users\mao\Documents\php\index.php pada baris 18 Ralat Parse PHP: ralat sintaks, '$a' (T_VARIABLE) yang tidak dijangka dalam C:\Users\mao\Documents\php\index.php pada baris 18 [Selesai dalam 0.1s]

0$a ditulis dengan sengaja, mengapa pengecualian tidak dikendalikan?

漂亮男人
漂亮男人

membalas semua(3)
洪涛

Anda boleh mencuba percubaan PHP7{}tangkap(Ralat){}

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

ParseError extends Error 
PHPzhong

Ralat sintaks adalah yang pertama diberi amaran oleh sistem dan merupakan pengecualian peringkat sistem Sebaik sahaja sistem memberi amaran, keseluruhan program tidak pernah dijalankan.

迷茫

Pertama sekali, anda mesti memahami bahawa pengecualian dan ralat adalah berbeza Pengecualian adalah situasi di luar logik biasa, manakala ralat merujuk kepada ralat semasa masa jalan. Sebaik sahaja ralat berlaku, keseluruhan kod tidak lagi akan dilaksanakan dan program anda akan digantung. Jika pengecualian berlaku, anda boleh menggunakan try catch untuk menangkapnya dan program boleh terus berjalan!

Jelas sekali, kod anda mempunyai ralat sintaks, jadi program ini tidak boleh dilaksanakan sama sekali, yang bermaksud bahawa anda telah mencetuskan ralat dan bukannya pengecualian. Jadi bagaimana untuk mencapai kesan yang anda inginkan? Mula-mula kita perlu menyelesaikan masalah sintaks, lihat kod di bawah

    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";
    }
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan