我在worker的模型内部调用了方法@txt.watch
,在watch()
内部有一个parameters(parameters = self.parameters)
数组。每个参数都有唯一的参考ID。
我想从worker内部挽救每个参数的每个异常错误。
class TextWorker
def perform(id)
@txt = WriteTxt.find(id)
begin
@txt.watch
total_complete_watch = if @txt.job_type == 'movie'
@txt.total_count
else
@txt.tracks.where(status:'complete').size
end
@txt.completed = total_completed_games
@txt.complete = (total_complete_games == @txt.total_count)
@txt.completed_at = Time.zone.now if @txt.complete
@txt.zipper if @txt.complete
@txt.save
FileUtils.rm_rf @txt.base_dir if @txt.complete
rescue StandardError => e
#How to find errors for each reference_id here
raise e
end
end
end
有什么办法可以做。非常感谢你。
答案 0 :(得分:1)
我假设self.parameters
在您的Model类实例中。在这种情况下,请执行以下操作,您可以引用它们。
begin
@txt.watch
rescue StandardError
p @parameters # => self.parameters in the Model context
raise
end
注意:
根据经验,建议将救援范围限制为尽可能狭窄。不要在主子句中包含不应引发Exception的语句(例如@txt.save
和FileUtils.rm_rf
)。而且,最好限制一个异常的类别。例如,抢救Encoding::CompatibilityError
而不是EncodingError
,或者抢救EncodingError
的{{1}},依此类推。或者,更好的方法是定义自己的Exception类并故意引发它。