Yii verfügt über einen integrierten Fehlerhandler, der die Fehlerbehandlung komfortabler macht. Der Yii-Fehlerhandler führt Folgendes aus, um den Fehlerbehandlungseffekt zu verbessern :
Alle nicht schwerwiegenden PHP-Fehler (z. B. Warnungen, Eingabeaufforderungen) werden in verfügbare Ausnahmen umgewandelt. >Ausnahmen und schwerwiegende PHP-Fehler werden angezeigt und detaillierte Funktionsaufrufstapel und Quellcodezeilennummern werden angezeigt im Debug-Modus. Unterstützt die Verwendung dedizierter Controller-Aktionen zur Anzeige von Fehlern
Unterstützt verschiedene Fehlerantwortformate Fehlerhandler Der Fehlerhandler ist standardmäßig aktiviert und kann übergeben werden Definieren Sie die Konstante YII_ENABLE_ERROR_HANDLER im Eingabeskript der Anwendung, um sie zu deaktivieren.
Fehlerhandler verwendenFehlerhandler wird als Anwendungskomponente namens errorHandler registriert, die in der Anwendungskonfiguration wie folgt konfiguriert werden kann:
return [ 'components' => [ 'errorHandler' => [ 'maxSourceLines' => 20, ], ], ];
Mit dem obigen Code werden auf der Ausnahmeseite bis zu 20 Quellcodes angezeigt.
Wie bereits erwähnt, wandelt der Fehlerhandler alle nicht schwerwiegenden PHP-Fehler in abfangbare Ausnahmen um, was bedeutet, dass Sie den folgenden Code zur Behandlung von PHP-Fehlern verwenden können:use Yii; use yii\base\ErrorException; try { 10/0; } catch (ErrorException $e) { Yii::warning("Division by zero."); } // execution continues...
Wenn Sie eine Fehlerseite anzeigen möchten, die dem Benutzer mitteilt, dass die Anfrage ungültig ist oder nicht bearbeitet werden kann, lösen Sie einfach eine HTTP-Ausnahme wie yiiwebNotFoundHttpException aus.
Der Fehlerhandler legt den Antwort-HTTP-Statuscode korrekt fest und verwendet die entsprechende Fehleransichtsseite, um die Fehlermeldung anzuzeigen. Das obige ist der detaillierte Inhalt vonUmgang mit Fehlern im Yii-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!use yii\web\NotFoundHttpException;
throw new NotFoundHttpException();