Php Zend框架的控制器中存在异常

Php Zend框架的控制器中存在异常,php,zend-framework,exception,Php,Zend Framework,Exception,我在Zend Framework 1.12中发现了一件奇怪的事情 在action函数中,我创建了一个不存在的新对象。代码如下: public function signupAction () { $tbuser = new mmmm();//mmmm does not exist, so there's exception here } 但它不会转向错误控制器 我尝试了下面的代码,它的工作。它转向ErrorController,并显示应用程序错误 publi

我在Zend Framework 1.12中发现了一件奇怪的事情

在action函数中,我创建了一个不存在的新对象。代码如下:

 public function signupAction ()
    {

        $tbuser = new mmmm();//mmmm does not exist, so there's exception here
    }
但它不会转向错误控制器

我尝试了下面的代码,它的工作。它转向ErrorController,并显示应用程序错误

public function signupAction ()
{
    throw new Exception('pppp');
}
怎么了?需要配置其他内容吗?

因为“找不到类”是错误,而不是异常

因此,Zend在调用$controller->dispatch()时不会捕获它

请参见此块(Zend\u控制器\u调度器\u标准):

为了避免此错误,可以使用函数类_exists在调用它之前检查类是否已定义

请参阅此链接:

更新:

默认情况下,falta错误将导致当前php脚本关闭

因此,您需要(1)自定义错误处理程序(2)将Falta错误更改为 异常,它可以被ErrorController捕获

如下所示(在index.php中):


Ref:

我希望无论发生什么错误,我都可以得到错误消息并回显它,我该怎么做?
try {
    $controller->dispatch($action);
} catch (Exception $e) {
    //...
}
register_shutdown_function('__fatalHandler');

function __fatalHandler() {
    $error = error_get_last();
    if ( $error !== NULL && $error['type'] === E_ERROR ) {
        $frontController = Zend_Controller_Front::getInstance();
        $request = $frontController->getRequest();
        $response = $frontController->getResponse();
        $response->setException(new Exception('Falta error:' . $error['message'],$error['type']));

        ob_clean();// clean response buffer
        // dispatch
        $frontController->dispatch($request, $response);
    }
}