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:
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', ], ] // ... ];
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; } } // ... }
Das obige ist der detaillierte Inhalt vonyii2 benutzerdefinierte Fehlerbehandlung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!