[Zend Framework] Zend_Controller: エラーハンドラプラグインのふるまい

ErrorController を確認しながら、例外処理まわりについて調べていきます。
Zend Framework Version: 1.12.3

[markdown]

例外が発生すると、標準で設定されているエラーハンドラープラグインの働きにより、ErrorController という例外処理の専用コントローラに送られます。

> * [プラグイン – Zend_Controller – Zend Framework](http://framework.zend.com/manual/1.12/ja/zend.controller.plugins.html#zend.controller.plugins.standard.errorhandler)
>
> Zend_Controller_Plugin_ErrorHandler は、アプリケーションからスローされた例外を処理するためのプラグインです。 たとえば、指定したコントローラやアクションが見つからないといったエラーを処理します。 これは、MVC の例外についてのセクション で説明したメソッド群の代わりとして使用できます。
>
> このプラグインが主に対象としているのは、次のような例外です。
>
> * 一致したルートが見つからない場合に発生する例外
> * コントローラやアクションメソッドが見つからない場合に発生する例外
> * アクションコントローラ内で発生する例外
>
> 言い換えると、ErrorHandler プラグインが想定しているのは、HTTP 404 型のエラー (ページが存在しない) と 500 型のエラー (内部エラー) ということになります。 他のプラグインで発生した例外の処理は、想定していません。

例えば、プログラム内で処理しきれない時には、Zend_Exception をつかって例外を発生させます。これにより ErrorController に例外処理を集約できます。

> * [Zend_Exception – Zend Framework Reference – Zend Framework](http://framework.zend.com/manual/1.12/ja/zend.exception.html)
> * [Zend_Exception – エラー処理を用意する、エラーコントローラにスローする | deadwood](https://www.d-wood.com/blog/2013/07/30_4390.html)

ブートストラップやエラーハンドラプラグインの登録前に例外が発生してもエラーハンドラプラグインは機能しないそう。別途用意が必要なようです。

> * [PHP5 ZendFramework-1.11 エラーハンドラプラグイン (Zend_Controller_Plugin_ErrorHandler) の利用](http://atamoco.boy.jp/php5/ZendFramework/20110316_1.php)

## 補遺

> * [PHP5 Zend Framework-1.11 プラグインで発生した例外をエラーアクションで1元管理 Zend_Controller_Plugin_ErrorHandler](http://atamoco.boy.jp/php5/ZendFramework/20110323_1.php)
> * [なんとなくメモ: ErrorController指定とFrontControllerの取得の仕方](http://memono.blogspot.jp/2010/02/errorcontrollerfrontcontroller.html)

プラグインとリソースプラグインは別物ってことですよね。混同してました。

> * [利用できるリソースプラグイン – Zend_Application – Zend Framework](http://framework.zend.com/manual/1.12/ja/zend.application.available-resources.html#zend.application.available-resources.log)

[/markdown]