可能是初学者的问题:
我正在尝试用考拉检查我在facebook上的用户权限。在某些情况下,我会抛出一个错误。因此,我只想捕获它并重定向到重新身份验证。
def check_facebook_permissions
if token = current_user.try(:authentications).find_by_provider('facebook').try(:token)
graph = Koala::Facebook::API.new(token)
permissions = graph.get_connections('me','permissions')
session[:facebook] = {}
session[:facebook][:ask_publish_actions] = true if permissions[0]['publish_actions'] != true && permissions[0]['publish_stream'] != true
end
rescue_from Koala::Facebook::APIError
# Do something funky here
end我以为这很简单,但我从来没想过要救我。相反,我得到的是:
Koala::Facebook::APIError (OAuthException: Error validating access token: Session has expired at unix time 1324026000. The current unix time is 1324352685.):这里我漏掉了什么?
发布于 2011-12-20 11:50:56
rescue_from不像rescue那样是Ruby的语法结构--它是一个普通的函数,你需要一个块来配合它。在您的代码中,没有给出任何代码,rescue_from被执行并被有效地跳过-它之后的内容与它之前引发的任何异常没有任何关系(就像您放入任何其他函数,如puts,而不是rescue_from一样)。
查看使用here的rescue_from示例。
要使这段代码正常工作,您需要使用vanilla Ruby rescue
rescue Koala::Facebook::APIError => e发布于 2011-12-20 11:51:25
在Ruby中处理错误的正确语法是:
begin
# do something that will throw an error
rescue StandardError => e # StandardError is the root class of most errors
# rescue the error
endhttps://stackoverflow.com/questions/8570553
复制相似问题