我对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
}请帮我解决这个问题,谢谢
发布于 2015-04-14 08:41:32
如果像catch语句一样捕捉到自己的异常,就不会让Slim为您处理异常,因此永远不会输入自定义错误方法。
您可以看到有关处理这里错误的官方声明,还可以在第1405行查看代码源这里。
你在这里有两个选择:
1)不尝试/捕获异常,让Slim处理所有异常
2)尝试/捕捉并在捕获中抛出一个新的异常。(不确定它是否非常有用)
此外,在引导应用程序时,请考虑一下调试标志,如果为true,您将拥有完整的异常堆栈跟踪,如果为false,则需要在"error“方法中向用户显示一些很好的东西。
您还可以编写自己的日志写入,这样您就可以自己记录异常。更多信息这里
https://stackoverflow.com/questions/21323578
复制相似问题