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

时间:2013-04-26 18:59:48

标签: redirect try-catch kohana kohana-3.3

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();
}

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

2 个答案:

答案 0 :(得分:3)

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();
}

答案 1 :(得分:1)

在捕捉异常时不要那么自由。赶上你的期望,没有别的。这个问题不应该存在。