【发布时间】:2020-08-21 11:11:23
【问题描述】:
我有一个 while do loop in rails as
session['SPEAKERS'].map do |speaker|
begin
Component::AgendaSpeaker.create_with(
name: [speaker['FIRST_NAME'], speaker['LAST_NAME']].join(' '),
job_title: speaker['TITLE'],
remote_file_url: speaker['PHOTO_URL'],
description: speaker['EXPERTISE']
).find_or_create_by(
component_id: component_id(:agenda_speakers),
weg_id: speaker['SPEAKER_ID']
)
rescue
p "Rescue reached"
ensure
p "Ensure reached"
end
end
对于循环的每次执行,我尝试创建并保存扬声器,有时在 active_record 中会引发异常(由于图像文件不可用或 403 禁止异常等)。
我想在我的救援块中捕获它并进一步处理它。但是,该异常在其他地方(在 active_record 中)被捕获并救援,这会直接在我的控制台中引发异常,因此代码根本不会到达我的“救援”块。但是,我的代码到达了“确保”块。
如何更改我的代码以到达我的“救援”块?
【问题讨论】:
-
不要在未指定要救援的异常的情况下使用救援。它创建了一个黑洞,将掩盖错误并使调试变得不可能。 stackoverflow.com/a/35121040/544825
标签: ruby-on-rails exception activerecord do-while rescue