cakephp - попробуйте / поймайте действие - PullRequest
2 голосов
/ 24 марта 2010

Я бы хотел как-то применить оператор try catch ко всем действиям в качестве backstop для любых необработанных исключений.

Я думаю, что это было бы особенно полезно для Ajax Actions, потому что оператор catch мог отправить обратно код состояния 4xx по умолчанию. Функция onFailure () прототипа может затем выполнять обработку ошибок на стороне клиента.

Как я могу сделать это, не заключая вызов Action в try / catch в диспетчере тортов, как это:

try {
    output = $controller->dispatchMethod($params['action'], $params['pass']);
}
catch {...}

Есть ли у кого-нибудь предложение или другая работоспособная стратегия для получения этой функциональности, не касаясь диспетчера?

Как люди относятся к обработке исключений в Диспетчере? Я полагаю, что когда в торт выпадет поддержка php 4, для этого будет встроен механизм.

[Редактировать] Я посмотрел в торт Обработка ошибок. Без try / catch кажется, что функциональность очень большая. И я не решаюсь смешивать ошибки и другие исключения.

Ответы [ 2 ]

1 голос
/ 19 февраля 2011

В app / webroot / index.php замените строку

$Dispatcher->dispatch($url);

с

try {
    $Dispatcher->dispatch($url);    
} catch(Exception $e) {
    // do exception handling
}
1 голос
/ 24 марта 2010

Я не совсем уверен, почему вы хотели бы сделать это. Вы можете проверить параметры, чтобы увидеть, является ли это вызов ajax в контроллере, используя,

if($this->params['requested'])

Я не знаю, какие исключения могут создавать ваши приложения, но если это пропущенное действие, представление или подобное, Cake выдаст страницу с ошибкой, которую вы можете настроить в папке app / views / errors. *

Книга содержит некоторую информацию о том, как обрабатывать ошибки, используя встроенный в CakePHP обработчик ошибок, http://book.cakephp.org/2.0/en/development/errors.html

Вы также можете найти в Google статьи и учебные пособия по созданию собственного обработчика ошибок или расширению встроенного обработчика, чтобы он обернул все вызовы отправки в попытку {} catch {} из ядра отправки цикл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...