【问题标题】:TypeError (class or module required for rescue clause)TypeError(rescue 子句所需的类或模块)
【发布时间】:2014-12-28 04:37:00
【问题描述】:

我已经使用 Stripe 一年多了,这是根据 Ryan Bates 的 RailsCast 剧集找到的 here。但是,我的错误处理最近停止了工作,而且我以前从未见过这个错误。我最近开始在 Ruby 2.1 上运行我的应用程序,据我所知,这就是问题所在。

这是我的Subscription 模型中的一个实例方法:

    begin
      save_with_stripe_payment
    rescue Stripe::InvalidRequestError => e
      logger.error "Stripe error while creating customer: #{e.message}"
      logger.error e.backtrace.join("\n")
      errors.add :base, "There was a problem with your card."
      false
    rescue e
      logger.error e.message
      logger.error e.backtrace.join("\n")
      errors.add :base, e.message
      false
    end

行:

    rescue Stripe::InvalidRequestError => e

是引发错误的那个。从那里的堆栈跟踪转到“开始”行,就是这样。我在这里错过了什么?

【问题讨论】:

    标签: ruby ruby-2.1


    【解决方案1】:

    错误中的行号有点误导,错误实际上来自于此:

    rescue e
    

    我想你是说

    rescue => e
    

    【讨论】:

    • 继续,谢谢 Max。我曾经拯救 Exception,然后被建议不要使用它。看来我删的太多了!
    【解决方案2】:

    我收到此错误是因为我试图挽救一系列异常,例如

    rescue *exceptions => e
    

    除了exceptions 是异常的一个实例(我的错误)。

    【讨论】:

      猜你喜欢
      • 2014-06-15
      • 2021-06-25
      • 2015-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-16
      • 1970-01-01
      • 2014-05-30
      相关资源
      最近更新 更多