Rumah > Artikel > pembangunan bahagian belakang > Pengendalian pengecualian dalam PHP7: Bagaimana untuk meningkatkan keteguhan kod anda?
Pengendalian pengecualian dalam PHP7: Bagaimana untuk meningkatkan keteguhan kod anda?
Semasa proses pembangunan, kami semua berharap kod kami boleh menjadi teguh dan tahan terhadap kesalahan untuk menghadapi pelbagai situasi yang tidak normal. Pengendalian pengecualian ialah kemahiran pengaturcaraan penting yang boleh membantu kami mengurus aliran kod dengan lebih baik dan meningkatkan kebolehselenggaraan kod. Dalam PHP7, beberapa ciri baharu diperkenalkan untuk menjadikan pengendalian pengecualian lebih elegan dan cekap. Artikel ini akan memperkenalkan beberapa teknik pengendalian pengecualian biasa dan memberikan contoh kod khusus.
Pengecualian merujuk kepada situasi abnormal yang dihadapi semasa menjalankan program, seperti kegagalan panggilan fungsi, ketiadaan fail, dsb. Dalam PHP, pengecualian dikendalikan dengan membaling dan menangkap. Apabila pengecualian dilemparkan, program mengganggu aliran semasa dan memindahkan aliran kawalan ke blok kod pengendalian pengecualian yang sepadan. Ini boleh memisahkan kod pengendalian pengecualian daripada logik perniagaan dan meningkatkan kebolehbacaan dan kebolehselenggaraan kod.
Dalam PHP7, pengecualian disusun dalam hierarki. Semua pengecualian diperoleh daripada kelas asas Pengecualian. Apabila kita perlu mengendalikan pelbagai jenis pengecualian, kita boleh mencipta kelas pengecualian tersuai dengan mewarisi kelas Pengecualian untuk menerangkan situasi pengecualian yang berbeza dengan lebih baik.
Berikut ialah contoh kelas pengecualian tersuai:
class FileNotExistException extends Exception { public function __construct($filename, $code = 0, Exception $previous = null) { $message = "File '{$filename}' does not exist"; parent::__construct($message, $code, $previous); } }
Dalam contoh di atas, kami telah mencipta kelas pengecualian yang dipanggil FileNotExistException, yang mewarisi daripada kelas Exception. Dalam pembina, kita boleh memasukkan parameter yang sepadan untuk menerangkan dengan lebih baik keadaan khusus pengecualian.
Apabila kita perlu membuang pengecualian dalam kod, kita boleh menggunakan pernyataan lontaran. Berikut ialah contoh mudah:
function openFile($filename){ if (!file_exists($filename)){ throw new FileNotExistException($filename); } // Do something... }
Dalam contoh di atas, kami menentukan fungsi openFile untuk membuka fail. Jika fail itu tidak wujud, kami akan membuang pengecualian FileNotExistException. Dengan cara ini, apabila memanggil fungsi ini, anda boleh mengendalikan kes di mana fail tidak wujud dengan menangkap pengecualian.
Berikut ialah contoh menangkap pengecualian:
try { openFile("example.txt"); } catch (FileNotExistException $e) { echo $e->getMessage(); }
Dalam contoh di atas, kami menggunakan pernyataan cuba-tangkap untuk menangkap pengecualian FileNotExistException yang mungkin dilemparkan dan mengeluarkan maklumat pengecualian. Jika pengecualian tidak ditangkap, program akan terus melaksanakan kod berikutnya jika tidak, program akan pergi ke blok tangkapan yang sepadan dan melaksanakan logik pengendalian pengecualian yang berkaitan.
Dalam PHP7, pengendalian rantai pengecualian ialah teknik biasa. Dengan menghantar parameter contoh kelas Pengecualian dalam pembina, pengecualian yang dilemparkan pada masa ini boleh dikaitkan dengan pengecualian sebelumnya untuk membentuk rantai pengecualian. Ini boleh mengesan sumber pengecualian dengan lebih baik dan memudahkan penyahpepijatan dan pengelogan.
Berikut ialah contoh pengendalian pengecualian berantai:
function readData($filename){ try { openFile($filename); } catch (FileNotExistException $e) { throw new DatabaseException("Failed to read data", 0, $e); } // Do something... }
Dalam contoh di atas, selepas menangkap pengecualian bahawa fail itu tidak wujud, kami membuang pengecualian tersuai baru DatabaseException dan merawat pengecualian sebelumnya sebagai Parameter ketiga dihantar masuk. Dengan cara ini, apabila kita menangkap pengecualian DatabaseException, kita boleh mendapatkan maklumat pengecualian sebelumnya melalui kaedah getPrevious kelas Exception.
Ringkasan:
Pengendalian pengecualian ialah kemahiran pengaturcaraan penting yang boleh membantu kami mengurus aliran kod dengan lebih baik dan meningkatkan keteguhan dan kebolehselenggaraan kod. Dalam PHP7, dengan memperkenalkan beberapa ciri baharu, seperti kelas pengecualian tersuai, melontar dan menangkap pengecualian, dan pemprosesan rantaian pengecualian, kami boleh mengendalikan pengecualian dengan lebih elegan dan cekap. Dalam pembangunan sebenar, kita harus menggunakan sepenuhnya ciri ini, digabungkan dengan keperluan perniagaan tertentu, dan secara fleksibel menggunakan pengendalian pengecualian untuk meningkatkan keteguhan kod.
Atas ialah kandungan terperinci Pengendalian pengecualian dalam PHP7: Bagaimana untuk meningkatkan keteguhan kod anda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!