cari

Rumah  >  Soal Jawab  >  teks badan

PHP gagal menangkap ralat penghuraian?

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?

漂亮男人漂亮男人2779 hari yang lalu445

membalas semua(3)saya akan balas

  • PHP中文网

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

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

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

    ParseError extends Error 

    balas
    0
  • PHPz

    PHPz2017-05-16 13:02:20

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

    balas
    0
  • 迷茫

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

    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";
        }

    balas
    0
  • Batalbalas