Kohana 3.3: Как обрабатывать перенаправления внутри блоков TryCatch

Новым в KO 3.3 является метод HTTP::redirect, который работает, вызывая HTTP_Exception_302, который всплывает и обрабатывается системой для фактического перенаправления.

Мой вопрос: как я могу сделать перенаправление, не перехватывая его исключение, если я вызываю перенаправление в блоке try...catch?

e.g.:

try {
    if($var === TRUE){
        HTTP::redirect(URL::site($_REQUEST['redirect_uri']));
    }else{
        throw new Exception('Error');
    }
} catch(Exception $e) {
    $this->template->errors[] = $e->getMessage();
}

Это не приведет к перенаправлению, потому что общий обработчик исключений перехватит его. Как этого избежать?


person Murray Rowan    schedule 26.04.2013    source источник


Ответы (2)


Не будьте столь либеральны в отлове исключений. Поймай то, что ожидаешь, и ничего больше. Этой проблемы не должно быть.

person zombor    schedule 26.04.2013
comment
Поправьте меня, если я ошибаюсь, но это именно то, что я делаю в этом случае? - person Murray Rowan; 26.04.2013
comment
Нет, вы либеральничаете в этом: catch(Exception $e). У вас есть надуманный пример, когда вы бросаете Exception. Создайте менее общее исключение. - person zombor; 27.04.2013

person    schedule
comment
Выполнимо, мне просто нужно добавить дополнительный улов ко всем моим try...catch петлям - person Murray Rowan; 26.04.2013