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();
}
这不会导致重定向,因为通用的异常处理程序将捕获它。我该如何避免这种情况?
答案 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)
在捕捉异常时不要那么自由。赶上你的期望,没有别的。这个问题不应该存在。