是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
}
请提前帮助我解决此问题
答案 0 :(得分:1)
如果您正在捕捉自己的异常情况,就像您使用catch语句一样,您不会让Slim为您处理异常,因此您永远不会输入自定义错误方法。
您可以查看有关错误处理的官方声明here,还可以在第1405行查看代码来源here。
所以你有两个选择:
1)不要尝试/捕获您的异常,让Slim Framework
处理所有异常2)尝试/捕捉并在你的捕获中抛出一个新的异常......(不确定它是否非常有用)
在引导应用程序时还要考虑调试标志,如果为true,则会有一个完整的异常堆栈跟踪,如果为false,则需要在"错误"中显示对用户不错的内容。方法
您也可以编写自己的日志写入,这样您就可以自己记录Exception。更多信息here