


Apa yang perlu dilakukan jika pengecualian/ralat global berlaku dalam PHP
Semasa pembangunan, kami selalunya perlu menyesuaikan ralat dan fungsi pengendalian pengecualian untuk memberikan petua pemprosesan yang lebih mesra dalam senario yang berbeza. Hari ini kami akan memperkenalkan cara menggunakan set_exception_handler/set_error_handler untuk menyelesaikan pengecualian/ralat Anda boleh merujuknya jika perlu.
Exception
Jika kita membuang Exception tanpa try catch capture processing, sistem akan menjana ralat maut dan keluar dari pelaksanaan selepas membuang maklumat yang berkaitan. .
throw new Exception("Error Processing Request", 1); Fatal error: Uncaught exception 'Exception' with message 'Error Processing Request'
set_exception_handler boleh menetapkan fungsi pengendalian pengecualian global Apabila pengecualian tidak dikendalikan oleh try catch, sistem akan menyerahkan pengecualian kepada fungsi ini untuk diproses
<?php /** * 全局异常处理函数,会捕捉没有被 try catch 处理的异常 * @param [type] $exception [description] * @return [type] [description] */ function func_exception_handler($exception) { echo "User Exception:" . " [" . $exception->getCode() . "]" . " message " . $exception->getMessage() . " in file " . $exception->getFile() . " on line " . $exception->getLine() . PHP_EOL; } //如果不设定全局的异常处理函数 且 抛出异常时不使用 try catch 处理则会 fatal error set_exception_handler("func_exception_handler"); try { throw new Exception("我会被 try catch 捕捉处理,不影响执行流程!"); } catch (Exception $e) { echo $e->getMessage() . PHP_EOL; } throw new Exception("我没有被 try catch 捕捉处理,会被全局 set_exception_handler 处理!"); echo "没有被 try catch 处理的异常在我之前抛出,虽然被 set_exception_handler 但仍然会立刻退出执行,执行不到我哟" . PHP_EOL;
Nota. : Walau bagaimanapun Oleh kerana masih tiada pemprosesan tangkapan cuba untuk pengecualian, atur cara masih akan keluar dari pelaksanaan selepas pemprosesan, dan kod berikutnya tidak akan dilaksanakan.
Ralat
Ralat yang sering kita hadapi dalam PHP ialah: ERROR/AMARAN/NOTIS
Kita boleh menggunakan fungsi trigger_error untuk mencetuskan ralat dan menggunakan set_error_handler untuk menentukan sendiri fungsi pengendalian ralat.
trigger_error mencetuskan ralat NOTIS peringkat pengguna secara lalai, yang tidak akan menjejaskan proses pelaksanaan Kod akan terus dilaksanakan Kami boleh menentukan sendiri tahap ralat apabila dicetuskan adalah untuk memintas ralat peringkat pengguna, ia tidak membenarkan skrip untuk keluar daripada pelaksanaan melainkan anda melaksanakan penilaian tahap ralat secara manual dalam kod pemprosesan anda sendiri. Jika pemintasan tidak dilakukan, ralat peringkat pengguna juga akan diserahkan kepada mekanisme pengendalian ralat sistem Mekanisme pengendalian ralat sistem adalah untuk keluar dengan ralat dan meneruskan pelaksanaan selepas notis amaran.
Selepas pengendalian ralat tersuai, ralat tidak lagi akan dihantar kepada sistem untuk diprosestrigger_error("notice, go on!", E_USER_NOTICE); echo "executing!" . PHP_EOL; trigger_error("warning, go on!", E_USER_WARNING); echo "executing!" . PHP_EOL; trigger_error("error, exit!", E_USER_ERROR); echo "not execute!";
<?php /** * 用户自定义的错误处理 * @param [type] $err_no 错误级别 * @param [type] $err_msg 错误信息 * @param [type] $err_file 错误文件 * @param [type] $err_line 错误所在行 * @return [type] [description] */ function func_error_handler($err_no, $err_msg, $err_file, $err_line) { //trigger_error 默认触发的为 notice 级别的用户错误 $level = [ E_USER_ERROR => "Error", E_USER_WARNING => "Waring", E_USER_NOTICE => "Notice" ]; echo "User {$level[$err_no]}: " . " [" . $err_no . "]" . " message " . $err_msg . " in file " . $err_file . " on line " . $err_line . PHP_EOL; //如果需要 我们可以手动判断错误级别是否退出执行 if ($err_no == E_USER_ERROR) { exit("fatal error, exit!"); } } set_error_handler("func_error_handler"); trigger_error("notice, go on!", E_USER_NOTICE); trigger_error("warning, go on!", E_USER_WARNING); trigger_error("error, exit!", E_USER_ERROR);
Pengecualian dibuang tetapi jangan gunakan cuba pemprosesan tangkapan. Sistem akan menjana ralat maut yang menyebabkan skrip keluar dari pelaksanaan set_exception_handler hanya menangkap pengecualian yang tidak dikendalikan oleh try catch dan menyesuaikan beberapa keluaran maklumat yang mesra Ia tidak dapat menghalang berlakunya ralat yang membawa maut perlaksanaan.
set_error_handler akan memintas ralat yang dicetuskan oleh pengguna untuk diproses dan bukannya menyerahkannya kepada sistem, tetapi ia tidak akan mengenal pasti tahap ralat secara automatik Kami perlu menentukan secara manual sama ada tahap RALAT untuk keluar atau AMARAN atau peringkat NOTIS menggesa untuk meneruskan pelaksanaan.
Pembelajaran yang disyorkan:
tutorial video phpAtas ialah kandungan terperinci Apa yang perlu dilakukan jika pengecualian/ralat global berlaku dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

Jika anda seorang pembangun PHP yang berpengalaman, anda mungkin merasakan bahawa anda telah berada di sana dan telah melakukannya. Anda telah membangunkan sejumlah besar aplikasi, menyahpenyahpepijat berjuta-juta baris kod dan mengubah suai sekumpulan skrip untuk mencapai op

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Rentetan adalah urutan aksara, termasuk huruf, nombor, dan simbol. Tutorial ini akan mempelajari cara mengira bilangan vokal dalam rentetan yang diberikan dalam PHP menggunakan kaedah yang berbeza. Vokal dalam bahasa Inggeris adalah a, e, i, o, u, dan mereka boleh menjadi huruf besar atau huruf kecil. Apa itu vokal? Vokal adalah watak abjad yang mewakili sebutan tertentu. Terdapat lima vokal dalam bahasa Inggeris, termasuk huruf besar dan huruf kecil: a, e, i, o, u Contoh 1 Input: String = "TutorialSpoint" Output: 6 menjelaskan Vokal dalam rentetan "TutorialSpoint" adalah u, o, i, a, o, i. Terdapat 6 yuan sebanyak 6

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Apakah kaedah sihir PHP? Kaedah sihir PHP termasuk: 1. \ _ \ _ Membina, digunakan untuk memulakan objek; 2. \ _ \ _ Destruct, digunakan untuk membersihkan sumber; 3. \ _ \ _ Call, mengendalikan panggilan kaedah yang tidak wujud; 4. \ _ \ _ Mendapatkan, melaksanakan akses atribut dinamik; 5. \ _ \ _ Set, melaksanakan tetapan atribut dinamik. Kaedah ini secara automatik dipanggil dalam situasi tertentu, meningkatkan fleksibiliti dan kecekapan kod.
