-
デフォルトでは、
エラーハンドラプラグイン が登録され、有効になっています。
このプラグインは、次のようなエラーを処理するように設計されています。
このプラグインは postDispatch()
プラグインとして動作し、ディスパッチャやアクションコントローラで
他の例外が発生していないかどうかを調べます。発生していた場合は、
エラーハンドラコントローラに処理を転送します。
このハンドラは大半の例外状況をカバーし、
コントローラやアクションが存在しない場合の対応を行います。
-
Zend_Controller_Front::throwExceptions()
このメソッドに TRUE を渡すと、
フロントコントローラがレスポンスオブジェクトに例外をまとめたり
エラーハンドラプラグインを使用したりするかわりに
例外を自分自身で処理できるようになります。たとえば次のようになります。
span style="color: #808080; font-style: italic;">// ここで、自分自身で例外を処理します
}
これが、自分のアプリケーションで独自の例外処理を行うための
もっとも簡単な方法でしょう。
この方法で、発生しうるすべての例外を処理できます。
-
Zend_Controller_Response_Abstract::renderExceptions()
このメソッドに TRUE を渡すと、
レスポンスオブジェクトをレンダリングする際に
例外メッセージやバックトレースも表示するようになります。
これを行うと、アプリケーションで発生したすべての例外が表示されるようになります。
実際の運用環境以外でのみ使用するようにしましょう。
-
Zend_Controller_Front::returnResponse() および
Zend_Controller_Response_Abstract::isException()
Zend_Controller_Front::returnResponse() に TRUE を渡すと、
Zend_Controller_Front::dispatch() はレスポンスをレンダリングせず、
そのまま返します。レスポンスを受け取った後で、
処理すべき例外があるかどうかを isException()
メソッドで調べ、その内容を getException() メソッドで取得します。
たとえば次のようになります。
span style="color: #808080; font-style: italic;">// 例外を処理します ...
Zend_Controller_Front::throwExceptions()
に比べてこの方法が優れている点は、例外を処理した後で、
それをレンダリングするかどうかを判断できるところです。
エラーハンドラプラグインとは異なり、
これはコントローラチェイン内で発生したすべての例外を捕捉します。