ruby 有条件的救援可以使用吗?

h5qlskok  于 4个月前  发布在  Ruby
关注(0)|答案(3)|浏览(52)

考虑一个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
有办法做到这一点吗?

qlvxas9a

qlvxas9a1#

你能做这样的事吗?

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

5jvtdoz2

5jvtdoz22#

你总是可以拯救它,然后要么处理或重新抛出取决于你的条件

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

字符串

wz3gfoph

wz3gfoph3#

您必须引发错误,否则它会将错误更改为RuntimeError
我的解决办法是

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

  raise error
end

字符串

相关问题