Maison >développement back-end >tutoriel php >Erreurs CakePHP et gestion des exceptions
La panne du système doit être gérée efficacement pour le bon fonctionnement du système. CakePHP est livré avec un système de capture d'erreurs par défaut, qui imprime et enregistre les erreurs au fur et à mesure qu'elles se produisent. Ce même gestionnaire d'erreurs est utilisé pour intercepter les Exceptions.
Le gestionnaire d'erreurs affiche les erreurs lorsque le débogage est vrai et enregistre l'erreur lorsque le débogage est faux. CakePHP possède un certain nombre de classes d'exceptions et la gestion intégrée des exceptions capturera toute exception non interceptée et affichera une page utile.
Les erreurs et exceptions peuvent être configurées dans le fichier configapp.php. La gestion des erreurs accepte quelques options qui vous permettent d'adapter la gestion des erreurs à votre application -
Option | Type de données | Description | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
niveau d'erreur | int |
|
|||||||||||||||||||||
trace | booléen | Inclure les traces de pile pour les erreurs dans les fichiers journaux. Les traces de pile seront incluses dans le journal après chaque erreur. Ceci est utile pour déterminer où et quand des erreurs sont générées. |
|||||||||||||||||||||
exceptionRenderer | chaîne |
La classe responsable du rendu des exceptions non interceptées. Si vous choisissez une classe personnalisée, vous devez placer le fichier de cette classe dans src/Error. Cette classe doit implémenter une méthode render(). |
|||||||||||||||||||||
journal | booléen |
<?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(); });Lorsque c'est vrai, les exceptions + leurs traces de pile seront enregistrées dans CakeLogLog. |
|||||||||||||||||||||
skipLog | tableau | Un tableau de noms de classes d'exceptions qui ne doivent pas être enregistrés. Ceci est utile pour supprimer les NotFoundExceptions ou d'autres messages de journaux courants mais sans intérêt. | |||||||||||||||||||||
extraFatalErrorMemory | int | Définissez le nombre de mégaoctets pour augmenter la limite de mémoire lorsqu'une erreur fatale est rencontrée. Cela permet de respirer pour terminer la journalisation ou la gestion des erreurs. |
<?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(); } } } ?>Exemple
Apportez des modifications au fichier config/routes.php comme indiqué dans le code suivant. config/routes.php
Créez le fichier
ExpsController.phpThis is CakePHP tutorial and this is an example of Passed arguments.<br> Argument-1: =$argument1?><br> Argument-2: =$argument2?><br>dans
src/Controller/ExpsController.php.
Copiez le code suivant dans le fichier du contrôleur.
Créez un répertoire Exps dans src/Template et sous ce répertoire, créez un fichier View appelé index.php. Copiez le code suivant dans ce fichier. src/Template/Exps/index.php Exécutez l'exemple ci-dessus en visitant l'URL suivante. http://localhost/cakephp4/exception/5/0 Sortie Lors de l'exécution, vous recevrez le résultat suivant.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!