Ruby 是否可以使用带条件的rescue?

Ruby 是否可以使用带条件的rescue?,ruby,exception,rack,Ruby,Exception,Rack,考虑一个Rack应用程序。我只想在未运行测试时处理错误: begin do_something if ENV[ 'RACK_ENV' ] != 'test' rescue => error handle_error error end end end 这将生成语法错误、意外的关键字\u rescue(SyntaxError) rescue=>错误 有办法吗?你能这样做吗 begin do_something rescue => err

考虑一个Rack应用程序。我只想在未运行测试时处理错误:

begin
  do_something

  if ENV[ 'RACK_ENV' ] != 'test'
    rescue => error
      handle_error error
    end
  end
end
这将生成
语法错误、意外的关键字\u rescue(SyntaxError)
rescue=>错误


有办法吗?

你能这样做吗

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

你可以随时营救它,然后根据你的情况处理或重新起锚

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

如果在救援中引发异常,则不需要传递参数:
raiseif ENV[“RACK_ENV”]=“test”;handle_error error
这里的问题是它更改了错误的位置。