4

KO 3.3 の新機能は、HTTP::redirect メソッドです。これは、HTTP_Exception_302 をスローすることによって機能します。このメソッドは、バブルアップし、実際のリダイレクトを行うためにシステムによって処理されます。

私の質問は、try...catchブロック内でリダイレクトを呼び出している場合、例外をキャッチせずにリダイレクトを行うにはどうすればよいですか?

例えば:

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

一般的な例外ハンドラーがそれをキャッチするため、リダイレクトは発生しません。どうすればこれを回避できますか?

4

2 に答える 2

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();
}
于 2013-04-26T19:13:20.133 に答える
1

例外のキャッチにあまり寛容にならないでください。あなたが期待するものをキャッチしてください。この問題は存在しないはずです。

于 2013-04-26T19:18:53.070 に答える