在Zend Framework 1中不使用try catch处理异常

时间:2014-05-26 16:23:32

标签: exception zend-framework

我有一个在Zend Framework 1中开发的项目。项目已经完成。

现在,当我测试整个网站时,有些网页会抛出异常。其中之一如下:

  

异常'Zend_Paginator_Exception',消息'No adapter for type NULL'

我在网上搜索并获得了为此添加try-catch的步骤。但是检查所有代码并重复此步骤需要花费很多时间。

我可以编写一个常见的异常处理程序来捕获所有异常并处理它吗?

2 个答案:

答案 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块。