超薄重定向工作; 但也抛出一个例外

Har*_*ble 1 slim

以下代码正确重定向; 但也引发了一个例外:

$app->post("/foo", function () use ($app) {

    try {

        $app->redirect('/bar');

    } catch (Exception $e) {

        $app->log->debug("\n" . $e->getFile() . " (Line " . $e->getLine() . ") " . " - " . strftime('%c') . ": Exception (" . $e->getMessage() . ")");
        $app->log->debug("\n" . $e->getTraceAsString());

    }

});
Run Code Online (Sandbox Code Playgroud)

这是来自Slim日志:

/{site root}/Slim/Slim.php (Line 1017)  - Wed Sep 17 17:51:33 2014: Exception ()

#0 /{site root}/Slim/Slim.php(1037): Slim\Slim->stop()
#1 /{site root}/Slim/Slim.php(1100): Slim\Slim->halt(302)
#2 /{site root}/index.php(328): Slim\Slim->redirect('/bar')
#3 [internal function]: {closure}()
#4 /{site root}/Slim/Route.php(462): call_user_func_array(Object(Closure), Array)
#5 /{site root}/Slim/Slim.php(1326): Slim\Route->dispatch()
#6 /{site root}/Slim/Middleware/Flash.php(85): Slim\Slim->call()
#7 /{site root}/Slim/Middleware/MethodOverride.php(92): Slim\Middleware\Flash->call()
#8 /{site root}/Slim/Middleware/PrettyExceptions.php(67): Slim\Middleware\MethodOverride->call()
#9 /{site root}/Slim/Slim.php(1271): Slim\Middleware\PrettyExceptions->call()
#10 /{site root}/index.php(689): Slim\Slim->run()
#11 {main}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?或者这是Slim中的一个错误?我找不到任何关于这个特殊问题的提及.

Jer*_*all 7

Slim使用路由助手的例外,重定向就是其中之一.请参阅文档中的" 路线助手 "部分:

请注意,下面的应用实例方法帮手 halt(),pass(),redirect()和stop()使用异常实现.每个都会抛出一个\Slim\Exception\Stop或 \Slim\Exception\Pass异常......如果意外,这种行为可能会令人惊讶.

有代码示例显示您正在经历的行为以及如何避免它.诀窍是重定向catch块中的错误并在try/catch块之后重定向以获得成功.