是否可以使用有条件的救援?

时间:2015-03-27 17:07:28

标签: ruby exception rack

考虑一个Rack应用程序。如果我们没有运行测试,我只想处理错误:

begin
  do_something

  if ENV[ 'RACK_ENV' ] != 'test'
    rescue => error
      handle_error error
    end
  end
end

这会生成syntax error, unexpected keyword_rescue (SyntaxError) rescue => error

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:9)

你可以这样做吗?

begin
  do_something

rescue => error
  if ENV["RACK_ENV"] == "test"
    raise error
  else
    handle_error error
  end
end

如果您没有进行测试,这将重新抛出异常。

修改

正如@Max指出的那样,你可以对此更加简洁。

begin
  do_something

rescue => error
  raise if ENV["RACK_ENV"] == "test"

  handle_error error
end

答案 1 :(得分:1)

您可以随时拯救它,然后根据您的情况处理或重新抛出

begin
  do_something
rescue => error
  if ENV['RACK_ENV'] != 'test'
    handle_error error
  else
    raise error
  end
end