Php Zend框架的控制器中存在异常
我在Zend Framework 1.12中发现了一件奇怪的事情 在action函数中,我创建了一个不存在的新对象。代码如下: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
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);
}
}