Kegagalan sistem perlu ditangani dengan berkesan untuk kelancaran sistem. CakePHP datang dengan perangkap ralat lalai, yang mencetak dan mencatat ralat semasa ia berlaku. Pengendali ralat yang sama ini digunakan untuk menangkap Pengecualian.
Pengendali ralat memaparkan ralat, apabila nyahpepijat adalah benar dan log ralat, apabila nyahpepijat adalah palsu. CakePHP mempunyai bilangan kelas pengecualian dan pengendalian pengecualian terbina dalam akan menangkap sebarang pengecualian yang tidak ditangkap dan menjadikan halaman berguna.
Ralat dan Konfigurasi Pengecualian
Ralat dan Pengecualian boleh dikonfigurasikan dalam fail configapp.php. Pengendalian ralat menerima beberapa pilihan yang membolehkan anda menyesuaikan pengendalian ralat untuk aplikasi anda −
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?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 10))
throw new Exception( "One of the number is out of range [1-10]." );
} catch (\Exception $ex ){
echo $ex ->getMessage();
}
}
}
?>
|
Salin selepas log masuk
Contoh
Buat perubahan dalam fail config/routes.php seperti yang ditunjukkan dalam kod berikut.
config/routes.php
Buat fail
ExpsController.php
1 2 3 | This is CakePHP tutorial and this is an example of Passed arguments.<br>
Argument-1: = $argument1 ?><br>
Argument-2: = $argument2 ?><br>
|
Salin selepas log masuk
di
src/Controller/ExpsController.php.
Salin kod berikut dalam fail pengawal.
src/Controller/ExpsController.php

Buat direktori Exps di src/Template dan di bawah direktori itu cipta fail View yang dipanggil index.php. Salin kod berikut dalam fail itu.
src/Template/Exps/index.php
Laksanakan contoh di atas dengan melawati URL berikut.
http://localhost/cakephp4/exception/5/0
Output
Setelah pelaksanaan, anda akan menerima output berikut.
Pilihan |
Jenis Data |
Penerangan |
errorLevel |
int |
Option |
Data Type |
Description |
errorLevel |
int |
The level of errors you are interested in capturing. Use the built-in php error constants, and bitmasks to select the level of error you are interested in. |
trace |
bool |
Include stack traces for errors in log files. Stack traces will be included in the log after each error. This is helpful for finding where/when errors are being raised. |
exceptionRenderer |
string |
The class responsible for rendering uncaught exceptions. If you choose a custom class, you should place the file for that class in src/Error. This class needs to implement a render() method. |
log |
bool |
When true, exceptions + their stack traces will be logged to CakeLogLog. |
skipLog |
array |
An array of exception class names that should not be logged. This is useful to remove NotFoundExceptions or other common, but uninteresting logs messages. |
extraFatalErrorMemory |
int |
Set to the number of megabytes to increase the memory limit by, when a fatal error is encountered. This allows breathing room to complete logging or error handling. |
Tahap ralat yang anda berminat untuk tangkap. Gunakan pemalar ralat php terbina dalam dan bitmasks untuk memilih tahap ralat yang anda minati. |
jejak |
bool |
Sertakan surih tindanan untuk ralat dalam fail log. Surih tindanan akan dimasukkan dalam log selepas setiap ralat. Ini berguna untuk mencari tempat/bila ralat ditimbulkan. |
exceptionRenderer |
rentetan |
Kelas yang bertanggungjawab untuk memberikan pengecualian yang tidak ditangkap. Jika anda memilih kelas tersuai, anda harus meletakkan fail untuk kelas tersebut dalam src/Error. Kelas ini perlu melaksanakan kaedah render().
|
log |
bool |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?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( '/exception/:arg1/:arg2' ,
[ 'controller' => 'Exps' , 'action' => 'index' ],
[ 'pass' => [ 'arg1' , 'arg2' ]]);
$builder ->fallbacks();
});
|
Salin selepas log masuk Apabila benar, pengecualian + surih tindanannya akan dilog ke CakeLogLog.
|
skipLog |
tatasusunan |
Susun atur nama kelas pengecualian yang tidak sepatutnya dilog. Ini berguna untuk mengalih keluar NotFoundExceptions atau mesej log biasa tetapi tidak menarik yang lain.
|
extraFatalErrorMemory |
int |
Tetapkan kepada bilangan megabait untuk meningkatkan had memori sebanyak, apabila ralat maut ditemui. Ini membolehkan ruang pernafasan menyelesaikan pembalakan atau pengendalian ralat. |
Atas ialah kandungan terperinci Kesilapan CakePHP & Pengendalian Pengecualian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!