在each_line代码块中进行救援

时间:2014-12-30 15:15:54

标签: ruby-on-rails ruby

我完全"新鲜"到Ruby并来自.NET背景。

我尝试创建一个非常简单的rake任务,将带有json对象的文件导入到我的数据库中。 当我试图在each_line的代码块内进行救援时,我的IDE引发了错误

File.open('etc/metrics_json.log').each_line do |line|
  metric_hash = JSON.parse(line)
  Metric.create(metric_hash)
  rescue RuntimeError => e
    puts e.message
end

错误是"语法错误,意外的keyword_rescue,期待keyword_end"

我做错了什么?

2 个答案:

答案 0 :(得分:2)

您可以像

一样使用它
File.open('etc/metrics_json.log').each_line do |line|
  begin
    metric_hash = JSON.parse(line)
    Metric.create(metric_hash)
  rescue RuntimeError => e
    puts e.message
  end
end

答案 1 :(得分:1)

您可以使用方法def作为开头。例如

def example_method
 ....
rescue
 ....
end

如果没有,则需要使用begin end

  begin
    metric_hash = JSON.parse(line)
    Metric.create(metric_hash)
  rescue RuntimeError => e
    puts e.message
  end