Heim > PHP-Framework > YII > yii2 benutzerdefinierte Fehlerbehandlung

yii2 benutzerdefinierte Fehlerbehandlung

(*-*)浩
Freigeben: 2019-12-14 09:34:20
Original
3465 Leute haben es durchsucht

yii2 benutzerdefinierte Fehlerbehandlung

Bei der Verwendung von Yii2 haben wir festgestellt, dass Yii2, sobald ein Fehler im Programm auftritt, automatisch seine spezielle Fehleraufforderungsschnittstelle anzeigen kann, die sich völlig von der Fehleraufforderungsschnittstelle unterscheidet, die bei uns angezeigt wurde hat das Originalprogramm geschrieben.

Wie genau wird das gemacht: Wo wird das Monitoring aufgebaut? Oder wo kann man Try Catch verwenden? "(Empfohlenes Lernen: YII-Framework )

Tatsächlich verfügt PHP über eine eigene spezielle Fehlerbehandlungs-API. Wenn das Programm fehlerhaft ist, können Sie die angegebene Funktion automatisch aufrufen. , wenn es startet , verwenden Sie PHPs integrierten set_error_handler, um seine eigene Fehlerbehandlung zu registrieren und PHPs eigene Fehleranzeige auszuschalten

Yii2-Fehleranpassung

Im offiziellen Tutorial wird uns das gesagt Um benutzerdefinierte Fehler zu ermöglichen, müssen wir die Komponenten wie folgt konfigurieren:

return [
    // ...
    
    'components' => [
        // ...
        
        'errorHandler' => [
            'errorAction' => 'site/error',
        ],
    ]
    
    // ...
];
Nach dem Login kopieren

Yii2-Fehlerkernverarbeitungsmethode

in Yii2 In benutzerdefinierter Fehlerverarbeitung, nachdem wir Wenn Sie das Prinzip der Yii2-Fehlerregistrierung verstehen und das Auftreten von Fehlern kennen, ruft Yii2 die Methoden handleException und handleError des Klassenobjekts yiiwebErrorHandler auf.

Tatsächlich gibt es in der Klasse yiiwebErrorHandler keine handleException und handleError .-Methode, aber in ihrer Basisklasse yiibaseErrorHandler rufen beide Funktionen schließlich die renderException-Methode von yiiwebErrorHandler auf. Der Code lautet wie folgt:

# yii\web\ErrorHandler
/**
 * Renders the exception.
 * @param \Exception $exception the exception to be rendered.
 */
protected function renderException($exception)
{
    // ...
    // 注意:控制错误是否能自定义的关键
    // !YII_DEBUG 表示了如果你现在是在 Debug 模式下,那么不能自定义错误
    // 即使你配置了组件的 'errorHandler' => ['errorAction' => 'site/error'] 参数
    $useErrorView = $response->format === Response::FORMAT_HTML && (!YII_DEBUG || $exception instanceof UserException);
    // 传递到自定义错误处理方法
    if ($useErrorView && $this->errorAction !== null) {
        $result = Yii::$app->runAction($this->errorAction);
        if ($result instanceof Response) {
            $response = $result;
        } else {
            $response->data = $result;
        }
    }
    
    // ...
}
Nach dem Login kopieren

In der endgültigen Fehleranzeigemethode renderException können wir Folgendes sehen: Benutzerdefinierte Fehler benötigen Es nur wird im Nicht-DEBUG-Modus wirksam

Das obige ist der detaillierte Inhalt vonyii2 benutzerdefinierte Fehlerbehandlung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage