Slim Framework异常处理

时间:2014-01-24 02:53:59

标签: php exception-handling slim

是Slim框架的新手,并且很难在slim中设置异常处理,我的要求是在我的代码中出现意外情况时重定向到错误页面。

试过这段代码

$smartView= new \Slim\Views\Smarty();
$app = new \Slim\Slim(array(
'debug' => false,
'view' => $smartView,
'templates.path' => '../templates/',
));
$app->error(function ( Exception $e ) use ($app) {
echo "my exception print here : " . $e;
});

在我的index.php文件中,但苗条仍然调用它的默认异常处理程序。

这是我的路由器电话

$app->get('/game', function () use ($app) {
   try{
        $facebook = new Facebook(array(
            'appId'  => appid,
            'secret' =>appsecret,
            'cookie' => true,
            'allowSignedRequest' => true
        ));

            $oStuff = new models\User ();
            $oStuff->fbLogin($facebook); // To get User details and game select
   }
    catch (\Exception $e) {
        //echo 'Caught exception: ',  $e->getMessage(), "\n";
       echo $e;
       echo "catch exception";
    }
});

这是我的功能有一些错误

 public function fbLogin($facebook)
    { 
      $app = \Slim\Slim::getInstance(); 
      $user = $facebook->getUser() // here is syntax error so i need to get it in my  exception

 }

请提前帮助我解决此问题

1 个答案:

答案 0 :(得分:1)

如果您正在捕捉自己的异常情况,就像您使用catch语句一样,您不会让Slim为您处理异常,因此您永远不会输入自定义错误方法。

您可以查看有关错误处理的官方声明here,还可以在第1405行查看代码来源here

所以你有两个选择:

1)不要尝试/捕获您的异常,让Slim Framework

处理所有异常

2)尝试/捕捉并在你的捕获中抛出一个新的异常......(不确定它是否非常有用)

在引导应用程序时还要考虑调试标志,如果为true,则会有一个完整的异常堆栈跟踪,如果为false,则需要在"错误"中显示对用户不错的内容。方法

您也可以编写自己的日志写入,这样您就可以自己记录Exception。更多信息here