首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rescue_from考拉异常

rescue_from考拉异常
EN

Stack Overflow用户
提问于 2011-12-20 11:46:38
回答 2查看 2K关注 0票数 3

可能是初学者的问题:

我正在尝试用考拉检查我在facebook上的用户权限。在某些情况下,我会抛出一个错误。因此,我只想捕获它并重定向到重新身份验证。

代码语言:javascript
复制
  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

我以为这很简单,但我从来没想过要救我。相反,我得到的是:

代码语言:javascript
复制
Koala::Facebook::APIError (OAuthException: Error validating access token: Session has expired at unix time 1324026000. The current unix time is 1324352685.):

这里我漏掉了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-20 11:50:56

rescue_from不像rescue那样是Ruby的语法结构--它是一个普通的函数,你需要一个块来配合它。在您的代码中,没有给出任何代码,rescue_from被执行并被有效地跳过-它之后的内容与它之前引发的任何异常没有任何关系(就像您放入任何其他函数,如puts,而不是rescue_from一样)。

查看使用hererescue_from示例。

要使这段代码正常工作,您需要使用vanilla Ruby rescue

代码语言:javascript
复制
rescue Koala::Facebook::APIError => e
票数 8
EN

Stack Overflow用户

发布于 2011-12-20 11:51:25

在Ruby中处理错误的正确语法是:

代码语言:javascript
复制
begin
  # do something that will throw an error
rescue StandardError => e # StandardError is the root class of most errors
  # rescue the error
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8570553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档