Techioz Blog

条件付きでレスキューを使用することはできますか?

概要

Rack アプリを考えてみましょう。テストを実行していない場合にのみエラーを処理したいと考えています。

begin
  do_something

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

これにより、構文エラー、予期しないkeyword_rescue (SyntaxError)が生成されます。 レスキュー => エラー

これを行う方法はありますか?

解決策

こんなことやってもらえませんか?

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