PHP ialah bahasa skrip sumber terbuka yang digunakan secara meluas dalam pembangunan web. Ia mempunyai mekanisme pengendalian pengecualian yang berkuasa yang membantu pembangun menangkap dan mengendalikan ralat dan pengecualian dengan lebih baik dalam program mereka.
1. Apakah itu anomali?
Apabila menulis atur cara, pelbagai ralat mungkin berlaku, seperti fail tidak ditemui, ketidakpadanan jenis pembolehubah, tatasusunan di luar sempadan, dsb. Ralat ini juga dipanggil pengecualian. Dalam PHP, pengecualian ialah ralat yang disebabkan oleh program tidak dapat meneruskan pelaksanaan atas sebab tertentu.
Kadangkala, kita boleh menentukan sama ada program berjalan seperti biasa dengan menyemak nilai pulangan atau menggunakan pernyataan if. Walau bagaimanapun, beberapa ralat tidak muncul semasa runtime, tetapi muncul dalam kod berikutnya. Ralat ini mungkin tidak dapat dikendalikan dalam fungsi semasa dan mesti dikendalikan oleh fungsi panggilan. Di sinilah mekanisme pengendalian pengecualian PHP masuk.
2. Mekanisme pengendalian pengecualian
Mekanisme pengendalian pengecualian sangat berkuasa dalam PHP Menggunakan pengecualian boleh membantu pembangun mengurus ralat dengan lebih baik. Pengendalian pengecualian membolehkan kami menentukan dan menggunakan mekanisme pengendalian ralat kami sendiri dalam kod kami dan mengendalikan ralat dengan sewajarnya apabila ia berlaku dalam program kami.
Mekanisme pengendalian pengecualian PHP adalah berdasarkan dua kelas utama: Kelas pengecualian dan kelas Ralat. Kelas Exception mewakili pengecualian yang berlaku dalam atur cara, manakala kelas Ralat mewakili ralat yang berlaku dalam atur cara. Kedua-dua kelas Exception dan kelas Ralat memanjangkan antara muka Throwable PHP terbina dalam, yang digunakan untuk menunjukkan sama ada kelas tersebut adalah pengecualian atau ralat.
Apabila ralat berlaku dalam atur cara, ia secara automatik akan mencipta objek pengecualian dan kemudian membuang pengecualian dengan memanggil pernyataan lontaran. Dalam program, blok cuba-tangkap digunakan untuk menangkap dan mengendalikan pengecualian.
cuba {
// 代码
} tangkapan (Exception $e) {
// 异常处理
}
Dalam contoh di atas, blok try mengandungi kod yang memerlukan untuk dijalankan , seperti panggilan fungsi atau instantiasi objek. Jika pengecualian berlaku dalam blok cuba, kawalan dipindahkan ke blok tangkapan. Blok tangkapan bertanggungjawab untuk menangkap dan mengendalikan pengecualian. Objek pengecualian boleh diakses melalui blok tangkapan, seperti $e.
Berikut ialah contoh yang lebih terperinci:
cuba {
// 执行代码
} tangkapan (Pengecualian $e) {
echo $e->getMessage();
}
Dalam kod di atas, kami menggunakan kaedah getMessage() untuk mendapatkan mesej objek pengecualian. Rentetan yang dikembalikan oleh kaedah getMessage() ialah mesej pengecualian yang ditentukan oleh pengendali pengecualian.
3. Pengecualian tersuai
Dalam kebanyakan kes, kami boleh menggunakan kelas Pengecualian terbina dalam PHP untuk mengendalikan pengecualian. Walau bagaimanapun, kadangkala, kami memerlukan pengecualian tersuai untuk mengurus dan mengendalikan ralat dalam program kami dengan lebih baik. Ini boleh dicapai dengan melanjutkan kelas Pengecualian.
Berikut ialah contoh pengecualian tersuai:
kelas CustomException memanjangkan Exception {
public function __toString() { return $this->getMessage(); }
}
Dalam contoh di atas, kami melanjutkan kelas Exception, dan kemudian mengatasi kaedah __toString(). Kaedah __toString() digunakan untuk mengembalikan rentetan yang mewakili objek pengecualian.
4. Pengendalian ralat
Seperti pengendalian pengecualian, pengendalian ralat juga merupakan ciri penting dalam bahasa PHP. Pengendalian ralat merujuk kepada menentukan dan menggunakan mekanisme pengendalian ralat anda sendiri dan mengendalikan ralat yang berlaku dalam program anda dengan sewajarnya.
Pengendalian ralat PHP menggunakan kaedah set_error_handler() dan register_shutdown_function().
Kaedah set_error_handler() digunakan untuk menentukan fungsi pengendalian ralat tersuai yang dipanggil apabila ralat berlaku. Kaedah register_shutdown_function() dipanggil selepas pelaksanaan skrip selesai Dalam masa terhad ini, sebarang maklumat ralat yang tidak dikendalikan boleh direkodkan.
Berikut ialah contoh pengendalian ralat:
function customError($errno, $errstr, $errfile, $errline) {
echo "<b>Error:</b> [$errno] $errstr<br>"; echo "Error on line $errline in $errfile<br>";
}
// Tetapkan pengendali ralat
set_error_handler("customError");
// Ralat berlaku
echo($test);
Dalam kod di atas, kami menggunakan set_error_handler () kaedah mentakrifkan pengendali ralat tersuai customError(). Apabila ralat berlaku, fungsi customError() akan dipanggil.
5. Ringkasan
Mekanisme pengendalian pengecualian PHP boleh menyediakan pembangun dengan pengurusan program dan fungsi penyahpepijatan. Ia membolehkan kami mengesan pengecualian dalam program kami dan mengendalikannya dengan sewajarnya. Memahami pengendalian pengecualian PHP dan pengendalian ralat adalah penting dan boleh membantu pembangun mengatur dan menyahpepijat kod mereka dengan lebih baik. Melalui pengenalan artikel ini, pembaca boleh memahami pengetahuan asas mekanisme pengecualian dalam PHP dan memberikan panduan untuk membina aplikasi Web yang lebih mantap.
Atas ialah kandungan terperinci Apakah mekanisme pengendalian pengecualian dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!