Maison > cadre php > YII > gestion des erreurs personnalisée yii2

gestion des erreurs personnalisée yii2

(*-*)浩
Libérer: 2019-12-14 09:34:20
original
3465 Les gens l'ont consulté

gestion des erreurs personnalisée yii2

En utilisant Yii2, nous avons constaté qu'une fois qu'une erreur se produit dans le programme, Yii2 peut afficher automatiquement son interface d'invite d'erreur dédiée, qui est complètement différente de l'interface d'invite d'erreur qui est apparue lorsque nous a écrit le programme original.

Comment cela se fait-il exactement : Où est mis en place la surveillance ? Ou où utiliser try catch ? "(Apprentissage recommandé : Framework YII )

En fait, PHP a sa propre API de traitement incorrect. Lorsque le programme est erroné, vous pouvez automatiquement appeler la fonction spécifiée. , quand il démarre, utilisez le set_error_handler intégré de PHP pour enregistrer sa propre gestion des erreurs et désactiver l'affichage des erreurs de PHP

Traitement personnalisé des erreurs Yii2

Dans le tutoriel officiel, il nous dit que pour activer les erreurs personnalisées, nous devons configurer les composants comme suit :

return [
    // ...
    
    'components' => [
        // ...
        
        'errorHandler' => [
            'errorAction' => 'site/error',
        ],
    ]
    
    // ...
];
Copier après la connexion

Méthode de traitement du noyau d'erreur Yii2

dans Yii2 Dans le traitement personnalisé des erreurs, après avoir Comprendre le principe de l'enregistrement des erreurs Yii2 et connaître l'apparition des erreurs, Yii2 appellera les méthodes handleException et handleError de l'objet de classe yiiwebErrorHandler

En fait, il n'y a pas de handleException et handleError dans la classe yiiwebErrorHandler. ., mais dans sa classe de base yiibaseErrorHandler, les deux fonctions finiront par appeler la méthode renderException de yiiwebErrorHandler, le code est le suivant :

# 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;
        }
    }
    
    // ...
}
Copier après la connexion

Dans la méthode d'affichage d'erreur finale renderException, nous pouvons voir : Les erreurs personnalisées n'en ont besoin que. prend effet en mode non-DEBUG

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal