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?
Anda boleh mencuba percubaan PHP7{}tangkap(Ralat){}
http://php.net/manual/ms/clas...
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