【发布时间】: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