CakePHP ialah rangka kerja PHP popular yang menyediakan banyak ciri berguna, salah satunya ialah pengendalian pengecualian. Semasa proses pembangunan, kami mungkin menghadapi situasi di mana kami perlu menyesuaikan pengecualian. Artikel ini akan memperkenalkan cara membuat pengecualian tersuai dalam CakePHP.
1. Asas pengendalian pengecualian
Dalam CakePHP, pengendalian pengecualian dilaksanakan melalui kelas CakeErrorExceptionRenderer
. Apabila rangka kerja menangkap pengecualian, ia menghantar contoh pengecualian ke kelas ExceptionRenderer
. Kelas ini menyediakan beberapa kaedah berguna untuk memberikan pengecualian dan memaparkan mesej ralat yang sesuai kepada pengguna.
2. Cara membuat pengecualian tersuai
Untuk mencipta kelas pengecualian tersuai, anda perlu melanjutkan binaan -dalam kelas Exception
dan tetapkan mesej dan kod yang sesuai dalam kaedah __construct()
. Sebagai contoh, berikut ialah contoh kelas pengecualian tersuai bernama MyException
:
namespace AppException; use CakeCoreExceptionException; class MyException extends Exception { public function __construct() { parent::__construct('My custom exception message', 500); } }
Dalam contoh di atas, kami menghantar mesej pengecualian dan kod status HTTP 500 kepada pembina kelas induk.
Untuk membuang pengecualian tersuai, anda menggunakan pernyataan throw
sama seperti pengecualian lain. Sebagai contoh, berikut ialah contoh melontar MyException
pengecualian:
throw new AppExceptionMyException();
Dalam contoh di atas, kami mencipta dan melontar objek throw
menggunakan kata kunci MyException
.
Sebaik sahaja pengecualian tersuai dilemparkan, CakePHP akan menyerahkannya kepada kelas ExceptionRenderer
untuk mengendalikan dan membentangkan ralat. Anda boleh menambah pengendali tersuai dalam subkelas kelas ExceptionRenderer
untuk mengendalikan pengecualian tersuai. Sebagai contoh, berikut ialah contoh kelas pemapar pengecualian tersuai bernama AppExceptionRenderer
:
namespace AppError; use CakeErrorExceptionRenderer; class AppExceptionRenderer extends ExceptionRenderer { public function render() { if ($this->error instanceof AppExceptionMyException) { // 自定义处理程序 $response = $this->controller->response; $response = $response->withStatus(400); $response->type('json'); $response->body(json_encode(['error' => $this->error->getMessage()])); return $response; } // 未知异常处理程序 return parent::render(); } }
Dalam contoh di atas, kami menyemak sama ada jenis pengecualian ialah MyException
. Jika ya, kami menambah mesej ralat JSON tersuai pada respons dan mengembalikan respons. Jika tidak, kami memanggil kaedah render()
kelas induk untuk mengendalikan pengecualian.
Untuk menggunakan pemapar pengecualian tersuai yang dibuat di atas, anda perlu menentukannya dalam fail konfigurasi. Sebagai contoh, dalam fail config/bootstrap.php
, tambah baris berikut:
Configure::write('Error.exceptionRenderer', 'AppErrorAppExceptionRenderer');
Dalam contoh di atas, kami menetapkan kelas layak sepenuhnya kelas pemapar pengecualian tersuai di bawah konfigurasi Configure
menggunakan Error
nama kelas.
Kini apabila pengecualian tersuai dilemparkan, CakePHP akan memanggil pengendali tersuai yang ditakrifkan dalam kelas AppExceptionRenderer
untuk membuat dan membentangkan ralat.
Ringkasan
Dalam artikel ini, kami memperkenalkan cara membuat dan mengendalikan pengecualian tersuai dalam CakePHP. Menggunakan pengecualian tersuai, kami boleh menyediakan pengendalian ralat dan pengalaman pengguna yang lebih baik untuk aplikasi kami. Semoga artikel ini membantu anda lebih memahami pengendalian pengecualian dan cara membuat pengecualian tersuai dalam CakePHP.
Atas ialah kandungan terperinci Bagaimana untuk membuat pengecualian tersuai dalam CakePHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!