ここは以前の ethna.jp サイトを表示したものです。ここにあるドキュメントはバージョン2.6以降更新されません。
最新のドキュメントは 現在のethna.jp を閲覧してください。現ドキュメントが整備されるまでは、ここを閲覧してください。
Ethna > ドキュメント > 開発マニュアル > エラー処理 > エラー処理ポリシー

エラー処理ポリシー

アプリケーションの実行中に生じるエラーは、次の2つにわけられます。

  • System error
    • システムが原因で起きるエラー。DBエラーなど。
  • User error
    • ユーザがフォームに入力した値が不正である場合のエラー。

Ethnaフレームワークでは、これらのエラーは全てEthna_Error(またはPEAR_Error)によって処理されます。

Ethna_Error1.png

Ethna_Error

Ethna_Errorには、エラーコードとエラーメッセージが格納されています。 Ethna_Errorはシステムとしてエラーハンドリングを行うので,実際のアプリケーションでは,Ethna_Errorをアクションクラスで処理し,ユーザに必要な情報のみを提示します.

    function perform()
    {
        $sm =& new {アプリケーションID}_SampleManager();
         $result = $sm->test();
        if (Ethna::isError($result)) {

             //エラーの場合の処理
             .....
         }

         ....
     }

EthnaクラスのisError()メソッドで、エラーの有無を確認できます。 ここではtest()メソッドからエラーオブジェクトが返ってきた場合に,エラー処理を行うようにしています。

アプリケーションのManagerでエラーオブジェクトを返すには、次のようにします。

class {アプリケーションID}_SampleManager
{
    function test($data)
    {
        // 実際には,まともなエラー処理を行う.
        if (! $data) {
            return Ethna::raiseNotice('データがありません', E_SAMPLE_TEST);
        }
        return 0;
    }
}

エラーオブジェクトには、Notice,Warning,Errorの3つがあります。 エラーの内容に応じて,これらを使い分けます. アプリケーション固有のエラーメッセージを渡したい場合は、EthnaクラスのraiseNotice,raiseWarning,raiseErrorメソッドを使って,Ethna_Errorオブジェクトを生成します. この例では,raiseNoticeを用いてエラーオブジェクトを返しています. 引数には,メッセージとエラーコードを与えます.

アプリケーションエラーコードの定義

ActionError

Ethna_ActionError.png

エラーの内容をユーザに提示した場合,アクションクラスで受け取ったエラーオブジェクトをActionErrorに格納します。 具体的には、下記のようにae(actionError)のaddObjectメソッドを使います。

       if (Ethna::isError($result)) {
             $this->ae->addObject('testError', $result);
       }

また、エラーメッセージとエラーコードから、エラーオブジェクトを生成して、ActionErrorに追加するaddメソッドもあります。

ActionErrorの内容を表示するには,ビューで次のように書きます.

  <tr>
     <td>エラーメッセージ</td> 
     <td>{message name="testError"}</td>
  </tr>

添付ファイル: fileEthna_ActionError.png 1569件 [詳細] fileEthna_Error1.png 1467件 [詳細]