我有一个在Zend Framework 1中开发的项目。项目已经完成。
现在,当我测试整个网站时,有些网页会抛出异常。其中之一如下:
异常'Zend_Paginator_Exception',消息'No adapter for type NULL'
我在网上搜索并获得了为此添加try-catch的步骤。但是检查所有代码并重复此步骤需要花费很多时间。
我可以编写一个常见的异常处理程序来捕获所有异常并处理它吗?
答案 0 :(得分:1)
Zend框架使用errorController自动处理异常。您可以通过在配置文件中添加以下行来启用它。
resources.frontController.throwExceptions = 0
如果你想手动处理异常,而不是在整个代码中编写try / catch块,你可以使用下面的代码集中它。
告诉Zend Framework不处理异常。在您的application.ini
中执行此操作resources.frontController.throwExceptions = 1
定义一个自定义方法来处理Bootstrap类中的异常。
public function __handleExceptions(Exception $e){
//render a view with a simple error message for the user
//and send an email with the error to admin
}
覆盖Bootstrap类中Zend_Application_Bootstrap_Bootstrap的_bootstrap()
和run()
方法,如下所示。这将捕获引导和请求调度过程中抛出的所有异常,并调用自定义异常处理程序。
protected function _bootstrap($resource = null)
{
try {
parent::_bootstrap($resource);
} catch(Exception $e) {
$this->__handleExecptions($e);
}
}
public function run()
{
try {
parent::run();
} catch(Exception $e) {
$this->__handleExecptions($e);
}
}
这将消除在多个位置编写try / catch块的需要。希望这会有所帮助。
答案 1 :(得分:0)
如果你的index.php中有这一行
$application->bootstrap()->run();
您可以使用try
catch
阻止
try {
$application->bootstrap()->run();
} catch (Exception $e) {
//handle all exceptions here
}
当然,对于不同类型的异常,您也可以拥有许多catch块。