Zend Framework(ZF)可以根据业务需求配置成多模块的方式,这时我们可能需要在不同模块中采用不同的方式来处理各种错误和异常。在处理错误的时候,可以使用_forward直接跳转和显示,但是如何处理异常呢?官方手册中对此没有明确的说明。经过一番测试之后,发现可以通过以插件的方式进行处理。
比如有一个名为API的module,需要在此模块下对异常进行单独处理。我们只要在application/bootstrap.php中添加一个初始化方法,将错误处理以插件的方式注册就可以了,内容见下:
<?php
class Api_Bootstrap extends Zend_Application_Module_Bootstrap
{
/**
* 注册错误处理插件,使此Module的错误处理定向到apiModule/errorController/errorAction
*
*/
protected function _initPluginErrorHandler()
{
$front = Zend_Controller_Front::getInstance();
$front->registerPlugin(new Zend_Controller_Plugin_ErrorHandler(array(
'module' => 'api',
'controller' => 'error',
'action' => 'error'
)));
}
}
此时,如果api模块下有任何异常抛出,都将使用modules/api/controllers/errorController/errorAction进行处理了~