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

Exception 在Zend Framework 1中不使用try-catch处理异常,exception,zend-framework,Exception,Zend Framework,我有一个在Zend Framework 1中开发的项目。项目已经完成 现在,当我测试整个站点时,一些页面抛出了异常。其中之一是: 异常“Zend_Paginator_exception”,消息为“类型NULL无适配器” 我已经在网上搜索了,并得到了添加try-catch的步骤。但是检查所有代码并重复这一步需要很多时间 我可以编写一个通用异常处理程序来捕获所有异常并进行处理吗?Zend framework使用errorController自动处理异常。您可以通过在配置文件中添加以下行来启用它 re

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

现在,当我测试整个站点时,一些页面抛出了异常。其中之一是:

异常“Zend_Paginator_exception”,消息为“类型NULL无适配器”

我已经在网上搜索了,并得到了添加try-catch的步骤。但是检查所有代码并重复这一步需要很多时间


我可以编写一个通用异常处理程序来捕获所有异常并进行处理吗?

Zend framework使用errorController自动处理异常。您可以通过在配置文件中添加以下行来启用它

resources.frontController.throwExceptions = 0
如果您想手动处理异常,那么您可以使用下面的代码集中处理异常,而不是在代码中编写try/catch块

告诉Zend Framework不要处理异常。在应用程序中执行此操作。ini

resources.frontController.throwExceptions = 1
定义一个自定义方法来处理引导类中的异常。

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
    }
在引导类中重写Zend_Application_bootstrap_引导的
\u 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块的需要。希望这有帮助。

如果index.php中有这一行

$application->bootstrap()->run();
您可以使用
try
catch
块将其包装起来

try {
    $application->bootstrap()->run();
} catch (Exception $e) {
    //handle all exceptions here
}

当然,对于不同类型的异常,您也可以有许多catch块。

@Web\u Developer您的意思是什么?@Web\u Developer您需要覆盖Bootstrap()和run()方法。在引导类中。请参阅我的答案中的详细信息。@Web_开发者使用Zend_View组件并通过调用$e->getMessage()呈现您收到的消息;调用函数uu handleExecptions时出现拼写错误现在我可以在exception.resources.frontController.throweexceptions=0期间在函数中找到它。它不起作用。请删除此步骤并修改您的注释,包括拼写更正。我有这些行并添加了以下内容:try{$application->bootstrap();$application->run();}catch(异常$e){//此处处理所有异常会回显“Some error”;exit;}但仍会在屏幕上显示异常。