2013-09-22 6 views
0

Я нахожу странную вещь в Zend Framework 1.12.Исключение в контроллере Zend Framework

В действии функция, я новый объект, который не существует. Код, как указано ниже:

public function signupAction() 
    { 

     $tbuser = new mmmm();//mmmm does not exist, so there's exception here 
    } 

Но он не обращается к ErrorController.

Я попытался под кодом, он работает. Он обратился к ErrorController и показал ошибку приложения.

public function signupAction() 
{ 
    throw new Exception('pppp'); 
} 

Что случилось? Нужно ли мне настроить что-то еще?

ответ

2

Потому что «класс не найден» является Falta ошибка, не исключение

Так Зенд не ловит его, когда вызовы $ контроллер -> отправка().

Смотрите этот блок, пожалуйста (Zend_Controller_Dispatcher_Standard):

try { 
    $controller->dispatch($action); 
} catch (Exception $e) { 
    //... 
} 

Чтобы избежать этой ошибки, вы можете использовать функцию class_exists, чтобы проверить класс был определен или не раньше, чем назвать его.

Смотрите эту ссылку: class_exists

Update:

По умолчанию, ошибка Falta приведет текущий скрипт PHP, чтобы быть закрыты.

Так что вам нужно (1) настроить обработчик ошибок и (2) изменения FALTA Ошибка в 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); 
    } 
} 

Ref: Zend framework - error page for PHP fatal errors

+0

Я хочу, чтобы какая бы то ни было ошибка, я могу получить сообщение об ошибке и повторить его, как я могу это сделать? –

+0

Пожалуйста, просмотрите мое обновление. – ThoQ

Смежные вопросы