Redirect Kohana 3.3:如何在Try…Catch块中处理重定向

Redirect Kohana 3.3:如何在Try…Catch块中处理重定向,redirect,try-catch,kohana,kohana-3.3,Redirect,Try Catch,Kohana,Kohana 3.3,KO 3.3中的新功能是HTTP::redirect方法,它通过抛出HTTP_异常_302来工作,该异常会冒泡并由系统处理以执行实际的重定向 我的问题是:如果在try…catch块中调用重定向,如何在不捕获其异常的情况下执行重定向 e、 g: 这不会导致重定向,因为通用异常处理程序将捕获它。我如何避免这种情况?在捕捉异常时,不要太随意。抓住你所期望的,别无其他。这个问题不应该存在。如果我错了,请纠正我,但这正是我在这种情况下所做的吗?不,你在这方面很自由:catch(Exception$e)。您

KO 3.3中的新功能是HTTP::redirect方法,它通过抛出HTTP_异常_302来工作,该异常会冒泡并由系统处理以执行实际的重定向

我的问题是:如果在
try…catch
块中调用重定向,如何在不捕获其异常的情况下执行重定向

e、 g:


这不会导致重定向,因为通用异常处理程序将捕获它。我如何避免这种情况?

在捕捉异常时,不要太随意。抓住你所期望的,别无其他。这个问题不应该存在。

如果我错了,请纠正我,但这正是我在这种情况下所做的吗?不,你在这方面很自由:
catch(Exception$e)
。您有一个人为的示例,其中抛出了一个
异常
。抛出一个不太通用的异常。可行的话,我只需要在我的
try…catch
循环中添加一个额外的catch
try {
    if($var === TRUE){
        HTTP::redirect(URL::site($_REQUEST['redirect_uri']));
    }else{
        throw new Exception('Error');
    }
} 
catch(HTTP_Exception_Redirect $e) {
    // just rethrow it
    throw $e;
}
catch(Exception $e) {
    $this->template->errors[] = $e->getMessage();
}
try {
    if($var === TRUE){
        HTTP::redirect(URL::site($_REQUEST['redirect_uri']));
    }else{
        throw new Exception('Error');
    }
} 
catch(HTTP_Exception_Redirect $e) {
    // just rethrow it
    throw $e;
}
catch(Exception $e) {
    $this->template->errors[] = $e->getMessage();
}