CakePHP - Penanganan Error & Exception
Kegagalan sistem perlu ditangani secara efektif untuk kelancaran sistem. CakePHP hadir dengan perangkap kesalahan default, yang mencetak dan mencatat kesalahan saat terjadi. Penangan kesalahan yang sama ini digunakan untuk menangkapExceptions.
Penangan kesalahan menampilkan kesalahan, ketika debug benar dan mencatat kesalahan, ketika debug salah. CakePHP memiliki sejumlah kelas pengecualian dan penanganan pengecualian bawaan akan menangkap semua pengecualian yang tidak tertangkap dan membuat halaman yang berguna.
Kesalahan dan Konfigurasi Pengecualian
Kesalahan dan Pengecualian dapat dikonfigurasi dalam file config\app.php. Penanganan kesalahan menerima beberapa opsi yang memungkinkan Anda menyesuaikan penanganan kesalahan untuk aplikasi Anda -
Pilihan | Tipe data | Deskripsi |
---|---|---|
errorLevel | int | Tingkat kesalahan yang ingin Anda tangkap. Gunakan konstanta kesalahan php built-in, dan bitmask untuk memilih tingkat kesalahan yang Anda inginkan. |
jejak | bool | Sertakan jejak tumpukan untuk kesalahan dalam file log. Jejak tumpukan akan disertakan dalam log setelah setiap kesalahan. Ini berguna untuk menemukan di mana / kapan kesalahan muncul. |
exceptionRenderer | tali | Kelas yang bertanggung jawab untuk memberikan pengecualian yang tidak tertangkap. Jika Anda memilih filecustom kelas, Anda harus menempatkan file untuk kelas itu di src/Error. Kelas ini perlu mengimplementasikanrender() metode. |
catatan | bool | Jika benar, pengecualian + pelacakan tumpukannya akan dicatat dalam log Cake\Log\Log. |
skipLog | Himpunan | Larik nama kelas pengecualian yang tidak boleh dicatat. Ini berguna untuk menghapusNotFoundExceptions atau pesan log umum lainnya, tetapi tidak menarik. |
extraFatalErrorMemory | int | Setel ke jumlah megabyte untuk menambah batas memori, saat terjadi kesalahan fatal. Hal ini memungkinkan ruang bernapas untuk menyelesaikan pencatatan atau penanganan kesalahan. |
Contoh
Lakukan perubahan di config/routes.php file seperti yang ditunjukkan pada kode berikut.
config/routes.php
<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
$builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
'httpOnly' => true,
]));
$builder->applyMiddleware('csrf');
//$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
$builder->connect('/exception/:arg1/:arg2',
['controller'=>'Exps','action'=>'index'],
['pass' => ['arg1', 'arg2']]);
$builder->fallbacks();
});
Membuat ExpsController.php mengajukan di src/Controller/ExpsController.php. Salin kode berikut di file pengontrol.
src/Controller/ExpsController.php
<?php
namespace App\Controller;
use App\Controller\AppController;
use Cake\Core\Exception\Exception;
class ExpsController extends AppController {
public function index($arg1,$arg2) {
try{
$this->set('argument1',$arg1);
$this->set('argument2',$arg2);
if(($arg1 > 1 || $arg1 > 10) || ($arg2 < 1 || $arg2 > 10))
throw new Exception("One of the number is out of range [1-10].");
} catch(\Exception $ex){
echo $ex->getMessage();
}
}
}
?>
Buat direktori Exps di src/Template dan di bawah direktori itu buat a Viewfile bernama index.php. Salin kode berikut di file itu.
src/Template/Exps/index.php
This is CakePHP tutorial and this is an example of Passed arguments.
Argument-1: <?=$argument1?><br/>
Argument-2: <?=$argument2?><br/>
Jalankan contoh di atas dengan mengunjungi URL berikut.
http: // localhost / cakephp4 / exception / 5/0
Keluaran
Setelah dieksekusi, Anda akan menerima keluaran berikut.