ホームページ  >  記事  >  php教程  >  YII Framework チュートリアルでの例外処理の詳細な説明

YII Framework チュートリアルでの例外処理の詳細な説明

高洛峰
高洛峰オリジナル
2016-12-27 14:13:281497ブラウズ

この記事では、YII フレームワークの例外処理について説明します。参考のために皆さんと共有してください。詳細は次のとおりです。

例外はどこにでも存在します。プログラマーは、これらの例外を作成し、それを修正するのが仕事です。 YII フレームワークは PHP 例外をカプセル化し、例外処理を容易にします。

YII を使用してエラーと例外を処理するための設定方法:

例外を引き起こす状況

1 で YII_ENABLE_ERROR_HANDLER と YII_ENABLE_EXCEPTION_HANDLER を true として定義できます。例外をスローします。たとえば、

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

例外表示ビュー

エラーがコンポーネント CErrorHandler に転送されると、エラーを表示するための適切なビューが選択されます。

CErrorHandler は、エラー メッセージを表示するための適切なビューを検索します。検索順序は次のとおりです。

1. WebRoot/themes/ThemeName/views/system: 現在のテーマ ビューの下のシステム ディレクトリ内。

2. WebRoot/protected/views/system: アプリケーションのデフォルト ビューのシステム ディレクトリ内。
3. yii/framework/views: Yii が提供する標準のビュー ディレクトリ内。

キャプチャされた例外エラーを処理するアクションを使用します。

設定ファイルを変更します:

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

は、エラーを処理するアクションを指定するために使用されます。例えば、サイトコントローラーのエラーアクション

actionErrorのデフォルトコードは以下の通りです

/**
 * 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);
  }
}

このアクションでは、まずCErrorHandler::errorから詳細なエラー情報を取得します。取得した情報が空でない場合は、CErrorHandler::error によって返された情報を使用してエラー ビューをレンダリングします。 CErrorHandler::error によって返される情報は、次の構造の配列です。


code: HTTP ステータス コード (403、500 など);

type: エラーの種類 (CHttpException、PHP Error など); ;

file: エラーが発生した PHP ファイルの名前;

line: エラーが発生した行;

source: エラーが発生したコードのコンテキスト。

例外ログ

エラーが発生した場合、エラーレベルのエラーメッセージが記録されます。エラーが PHP の警告または通知によって引き起こされた場合、メッセージは php カテゴリに記録されます。エラー メッセージがキャッチされなかった例外によって引き起こされた場合、カテゴリは例外.ExceptionClassName になります ( CHttpException の場合、その statusCode も追加されます)。カテゴリ名に)。開発者はこれらのレコードを使用して、アプリケーション実行時のエラー メッセージと例外処理メソッドを監視できます。

この記事が Yii フレームワークに基づいた PHP プログラムの設計に役立つことを願っています。

YII Framework チュートリアルの例外処理の詳細については、PHP 中国語 Web サイトを参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。