Maison >php教程 >PHP开发 >Explication détaillée de la gestion des exceptions dans le didacticiel YII Framework

Explication détaillée de la gestion des exceptions dans le didacticiel YII Framework

高洛峰
高洛峰original
2016-12-27 14:13:281531parcourir

Cet article décrit la gestion des exceptions du YII Framework. Partagez-le avec tout le monde pour référence, comme suit :

Les exceptions sont partout. En tant que programmeur, vous vivez pour créer ces exceptions, puis les corriger. Le framework YII encapsule les exceptions PHP, ce qui facilite la gestion des exceptions.

Méthode de configuration pour utiliser YII pour gérer les erreurs et les exceptions :

Vous pouvez définir YII_ENABLE_ERROR_HANDLER et YII_ENABLE_EXCEPTION_HANDLER comme vrai dans le fichier d'entrée.

Les exceptions sont levées

1. Déclenchez l'événement onError ou onException

2. Lancez une exception artificiellement. Par exemple,

throw new ExceptionClass('错误信息');//异常的基类
throw new CHttpException(404,'此页面不存在');//面向最终用户的类

Vue d'affichage des exceptions

Lorsqu'une erreur est transmise au composant CErrorHandler, il sélectionnera la vue appropriée pour afficher l'erreur.
CErrorHandler recherchera les vues appropriées pour afficher les messages d'erreur. L'ordre de recherche est le suivant :

1. WebRoot/themes/ThemeName/views/system : dans le répertoire système sous la vue de thème actuelle.
2. WebRoot/protected/views/system : Dans le répertoire système de la vue par défaut de l'application.
3. yii/framework/views : Dans le répertoire de vues standard fourni par Yii.

Utiliser l'action pour gérer les erreurs d'exception capturées.

Modifier le fichier de configuration :

/yii_dev/testwebap/protected/config/main.php
    'errorHandler'=>array(
// use 'site/error' action to display errors
      'errorAction'=>'site/error',
    ),

est utilisé pour spécifier l'action pour gérer les erreurs. Par exemple, l'action d'erreur
actionError dans le contrôleur de site a le code par défaut suivant :

/**
 * This is the action to handle external exceptions.
 */
public function actionError()
{
  if($error=Yii::app()->errorHandler->error)
  {
    if(Yii::app()->request->isAjaxRequest)
      echo $error['message'];
    else
      $this->render('error', $error);
  }
}

Dans cette action, des informations détaillées sur l'erreur sont d'abord obtenues à partir de CErrorHandler::error. Si les informations obtenues ne sont pas vides, utilisez les informations renvoyées par CErrorHandler::error pour afficher la vue des erreurs. Les informations renvoyées par CErrorHandler::error sont un tableau avec la structure suivante :

code : code d'état HTTP (tel que 403, 500)
type : type d'erreur (tel que CHttpException, PHP Error) ; ;
message : message d'erreur ;
file : le nom du fichier PHP où l'erreur s'est produite ;
line : la ligne où l'erreur s'est produite ;
trace : informations sur la pile d'appels d'erreur ; source : le contexte du code où l'erreur s'est produite.

Journal des exceptions

Un message d'erreur de niveau d'erreur sera enregistré lorsqu'une erreur se produit. Si l'erreur est provoquée par un avertissement ou un avis PHP, le message sera enregistré dans la catégorie php ; si le message d'erreur est provoqué par une exception non interceptée, la catégorie sera exception.ExceptionClassName (pour CHttpException , son statusCode sera également ajouté au nom de la catégorie). Les développeurs peuvent utiliser ces enregistrements pour surveiller les messages d'erreur et les méthodes de gestion des exceptions lors de l'exécution de l'application.

J'espère que cet article sera utile à la conception de programmes PHP basés sur le framework Yii.

Pour des explications plus détaillées sur la gestion des exceptions dans les didacticiels YII Framework et les articles connexes, veuillez prêter attention au site Web PHP chinois !

Déclaration:
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