因为“找不到类”是错误的错误,而不是异常
所以 Zend 在调用 $controller -> dispatch() 时不会捕获它。
请看这个块(Zend_Controller_Dispatcher_Standard):
try {
$controller->dispatch($action);
} catch (Exception $e) {
//...
}
为避免此错误,您可以使用函数 class_exists 在调用之前检查类是否已定义。
请参阅此链接:class_exists
更新:
默认情况下,falta 错误会导致当前的 php 脚本被关闭。
所以你需要(1)自定义错误处理程序和(2)将 Falta Error 更改为 Exception 并且它可以被 ErrorController 捕获
像这样(在 index.php 中):
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);
}
}
参考:Zend 框架 - PHP 致命错误的错误页面