Maison >développement back-end >tutoriel php >Erreurs CakePHP et gestion des exceptions

Erreurs CakePHP et gestion des exceptions

WBOY
WBOYoriginal
2024-09-10 17:26:09856parcourir

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.

Configuration des erreurs et des exceptions

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
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.

Le niveau d'erreurs que vous souhaitez capturer. Utilisez les constantes d'erreur php intégrées et les masques de bits pour sélectionner le niveau d'erreur qui vous intéresse.
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.php
This 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.

src/Controller/ExpsController.php

Erreurs CakePHP et gestion des exceptionsCré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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Services CakePHPArticle suivant:Services CakePHP