Heim  >  Artikel  >  Backend-Entwicklung  >  CakePHP-Fehler- und Ausnahmebehandlung

CakePHP-Fehler- und Ausnahmebehandlung

WBOY
WBOYOriginal
2024-09-10 17:26:09822Durchsuche

Systemausfälle müssen effektiv behandelt werden, damit das System reibungslos funktioniert. CakePHP verfügt über eine standardmäßige Fehlerüberwachung, die auftretende Fehler ausgibt und protokolliert. Derselbe Fehlerhandler wird zum Abfangen von Ausnahmen.

verwendet

Der Fehlerhandler zeigt Fehler an, wenn Debug wahr ist, und protokolliert Fehler, wenn Debug falsch ist. CakePHP verfügt über eine Reihe von Ausnahmeklassen und die integrierte Ausnahmebehandlung erfasst alle nicht erfassten Ausnahmen und stellt eine nützliche Seite dar.

Fehler- und Ausnahmekonfiguration

Fehler und Ausnahmen können in der Datei configapp.php konfiguriert werden. Für die Fehlerbehandlung stehen einige Optionen zur Verfügung, mit denen Sie die Fehlerbehandlung für Ihre Anwendung anpassen können −

Option Datentyp Beschreibung
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.

Die Fehlerquote, die Sie erfassen möchten. Verwenden Sie die integrierten PHP-Fehlerkonstanten und Bitmasken, um die Fehlerstufe auszuwählen, an der Sie interessiert sind.
Trace bool

Stack-Traces für Fehler in Protokolldateien einbeziehen. Nach jedem Fehler werden Stack-Traces in das Protokoll aufgenommen. Dies ist hilfreich, um herauszufinden, wo/wann Fehler auftreten.

ExceptionRenderer Zeichenfolge

Die Klasse, die für das Rendern nicht abgefangener Ausnahmen verantwortlich ist. Wenn Sie eine benutzerdefinierte-Klasse auswählen, sollten Sie die Datei für diese Klasse in

src/Error

platzieren. Diese Klasse muss eine render()-Methode implementieren.

Protokoll bool
<?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();
});
Wenn wahr, werden Ausnahmen und ihre Stack-Traces in

CakeLogLog protokolliert.

skipLog Array Ein Array von Ausnahmeklassennamen, die nicht protokolliert werden sollten. Dies ist nützlich, um NotFoundExceptions oder andere häufige, aber uninteressante Protokollmeldungen zu entfernen.

extraFatalErrorMemory int Legen Sie die Anzahl der Megabyte fest, um die das Speicherlimit erhöht werden soll, wenn ein schwerwiegender Fehler auftritt. Dies gibt Spielraum für die vollständige Protokollierung oder Fehlerbehandlung.
<?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();
         }
      }
   }
?>
Beispiel

Nehmen Sie Änderungen in der Datei config/routes.php vor, wie im folgenden Code gezeigt. config/routes.php

Erstellen Sie die Datei

ExpsController.php
This is CakePHP tutorial and this is an example of Passed arguments.<br>
Argument-1: =$argument1?><br>
Argument-2: =$argument2?><br>
unter

src/Controller/ExpsController.php.

Kopieren Sie den folgenden Code in die Controller-Datei.

src/Controller/ExpsController.php

CakePHP-Fehler- und AusnahmebehandlungErstellen Sie ein Verzeichnis Exps unter src/Template und erstellen Sie unter diesem Verzeichnis eine View-Datei mit dem Namen index.php. Kopieren Sie den folgenden Code in diese Datei. src/Template/Exps/index.php Führen Sie das obige Beispiel aus, indem Sie die folgende URL besuchen. http://localhost/cakephp4/Exception/5/0 Ausgabe Bei der Ausführung erhalten Sie die folgende Ausgabe.

Das obige ist der detaillierte Inhalt vonCakePHP-Fehler- und Ausnahmebehandlung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:CakePHP-DiensteNächster Artikel:CakePHP-Dienste