「クラスが見つかりません」はファルタエラーであるため、例外ではありません
そのため、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 の致命的なエラーのエラー ページ