Heim > Artikel > Backend-Entwicklung > CakePHP-Fehler- und Ausnahmebehandlung
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.
verwendetDer 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 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 |
|
|||||||||||||||||||||
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/Errorplatzieren. 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.phpThis 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.
Erstellen 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!