TypeError(rescue 子句所需的类或模块)

Posted

技术标签:

【中文标题】TypeError(rescue 子句所需的类或模块)【英文标题】:TypeError (class or module required for rescue clause) 【发布时间】: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

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

【问题讨论】:

【参考方案1】:

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

rescue e

我想你是说

rescue => e

【讨论】:

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

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

rescue *exceptions => e

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

【讨论】:

以上是关于TypeError(rescue 子句所需的类或模块)的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:找不到所需的参数“outImg”(位置 6)

获取 TypeError:找不到所需的参数“rec”(位置 2)

TypeError:支持flask api中所需的缓冲区API的对象

解决 WCF 错误:EncryptedKey 子句未使用所需的加密令牌“System.IdentityModel.Tokens.X509SecurityToken”包装

WCF客户端 - EncryptedKey子句未包含所需的加密令牌

解决WCF错误:EncryptedKey子句未包含所需的加密令牌'System.IdentityModel.Tokens.X509SecurityToken'