【问题标题】:Ruby Rescue exception not firingRuby Rescue 异常未触发
【发布时间】:2019-07-10 02:31:11
【问题描述】:

红宝石 2.3.7p456 导轨 5.2.2 iMac macOS Mojave v 10.14.3

下面的代码段在 @cart = Cart.find(nil) 处触发 ActiveRecord::RecordNotFound 错误,但救援块永远不会触发。

感谢您的帮助,如果还有什么需要我提供的,请告诉我。

 module CurrentCart
  private
  def set_cart
    @cart = Cart.find(nil)
  rescue ActiveRecord::RecordNotFound
    puts 'There was an ActiveRecord::RecordNotFound error'
  end
end

【问题讨论】:

  • 那么运行这段代码的结果是什么?这个方法是否抛出异常?
  • 你可以尝试在方法的开头添加raise ActiveRecord::RecordNotFound这一行,看看是否被捕获?
  • 您可以通过说明行为发生的地点、时间和方式来改进您的问题。
  • 你可以试试raise ActiveRecord::RecordNotFound unless Cart.find(nil) 吗?
  • @mrzasa 发生的情况是,错误被抛出,一切都停止,网络浏览器抱怨 ActiveRecord::RecordNotFound 出现错误。据我了解,rescue 应该像 Javascript 等其他语言中的 try/catch 块一样捕获该错误。

标签: ruby-on-rails ruby macos exception-handling rescue


【解决方案1】:

通过 RBENV 安装不同版本的 Ruby 似乎已经解决了这个问题,我无法告诉你为什么会这样,只是代码可能是为特定版本的 Ruby 设计的。

【讨论】:

    猜你喜欢
    • 2011-02-15
    • 2015-09-30
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    • 2012-11-18
    • 2021-05-20
    相关资源
    最近更新 更多