Rumah > Soal Jawab > teks badan
Kod adalah seperti berikut Fungsi pengendalian ralat register_shutdown_function tidak dilaksanakan, yang sangat pelik
Hasil pelaksanaan:
0$a ditulis dengan sengaja, mengapa pengecualian tidak dikendalikan?
PHP中文网2017-05-16 13:02:20
Anda boleh mencuba percubaan PHP7{}tangkap(Ralat){}
http://php.net/manual/ms/clas...
ParseError extends Error
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.
迷茫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";
}