Yii2 отлов Exception

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
mutogen
Сообщения: 52
Зарегистрирован: 2013.10.16, 15:39

Yii2 отлов Exception

Сообщение mutogen »

Необходимо глобально после отработки action'ов отлавливать потенциально возникающий набор Exception'ов
В Yii1 было такое решение на этот счет http://stackoverflow.com/questions/1112 ... controller

Как быть в Yii2? Насколько я понял этих эвентов уже нет
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Yii2 отлов Exception

Сообщение samdark »

Например, так:

Код: Выделить всё

class MyController extends Controller
{
    public function run($route, $params = [])
    {
        try {
            return parent::run($route, $params);
        } catch (...) {
           // ...
        }
    }
}
 
andreyrud
Сообщения: 265
Зарегистрирован: 2011.09.26, 14:59

Re: Yii2 отлов Exception

Сообщение andreyrud »

А как сделать чтобы в случае эксепшена не вываливался дамп стека и работа продолжалась (выполнялся блок catch {...})?
У меня консольное приложение .
RGF
Сообщения: 213
Зарегистрирован: 2013.01.29, 13:19

Re: Yii2 отлов Exception

Сообщение RGF »

А можно в конфиге где то, аналогично
'errorHandler' => [
'errorAction' => 'site/error',
],
перенапрявлять все Exception куда либо?
Аватара пользователя
Roksalana
Сообщения: 215
Зарегистрирован: 2014.01.14, 09:34

Re: Yii2 отлов Exception

Сообщение Roksalana »

RGF писал(а):А можно в конфиге где то, аналогично
'errorHandler' => [
'errorAction' => 'site/error',
],
перенапрявлять все Exception куда либо?
Можно. Посмотрите мой вариант решения, возможно вам он тоже поможет: https://github.com/developeruz/yii2-custom-errorhandler

Код: Выделить всё

public function actions()
    {
        return [
            'error' => [
                'class' => 'developeruz\yii2_custom_errorhandler\ErrorHandler',
                'array_of_exceptions' => [
                    403 => function()
                    {
                        return $this->redirect(Url::to('/site/login'));
                    }, 
                    500 => function()
                    {
                        //send notification to administrator 
                        ...
                        return $this->redirect(Url::to('/site/index'));
                    }, 
                ]
            ]
        ];
    }
 
А еще можно не использовать yii\web\ErrorAction, а переопределить его, включив в него нужное поведение.
RGF
Сообщения: 213
Зарегистрирован: 2013.01.29, 13:19

Re: Yii2 отлов Exception

Сообщение RGF »

Спасибо!
Что то я затупил, все равно все проходит через 'errorAction' => 'site/error', там и ловить надо.
Ответить