WEBアプリケーション研究室 開発ノート TOP

WEBアプリケーション研究室 開発ノート [Zend Framwork] Action以外で発生した例外について

スポンサーサイト

-------- --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

    このエントリーをはてなブックマークに追加

Zend_Controllerを使用してコマンドラインから実行するCLIプログラムを作ってます。例外処理で、ディスパッチループに入る前に例外を投げた場合ErrorHandlerには行きません。デフォルトでは例外はResponseにためられて、何も出力しない設定になっているので何も表示されません。
Front_Controllerで


require_once 'Zend/Controller/Front.php';
$front = Zend_Controller_Front::getInstance();
$front->throwExceptions(true);
としてやれば例外をためないで投げるようになりますが、今度はErrorHandlerも無視されてしまうので404の処理なども独自に実装しなければならず面倒です。

$front->getResponse()->renderExceptions(true);
で、Responseにためた例外を出力するように出来ますが、私はset_exception_handlerを利用して自分が見やすいように例外を表示するようにしてあるので、Action内の例外はErrorHandlerに、それ以外は投げるようにしたいと思いました。Responseを拡張しても出来そうですがクラス階層が微妙になるので$front->dispatch()直後に次のような処理を入れて対応しました。

$front->dispatch();
if(!$front->getRequest()->isDispatched())
{
$e = $front->getResponse()->getException();
if($e)
{
throw $e[0];
}
}
スポンサーサイト

    このエントリーをはてなブックマークに追加
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。