46

ユーザーが -I フラグを指定するのを忘れた場合に備えて、指定するように示唆するために、「require」: no such file to load in ruby​​ から救おうとしています。基本的に、コードは次のようになります。

begin
  require 'someFile.rb'
rescue
  puts "someFile.rb was not found, have you"
  puts "forgotten to specify the -I flag?"
  exit
end

見つからなかっrescueた場合に実行を引き継ぐ部分を期待していましたが、私の仮定は間違っていました。someFile.rb

4

2 に答える 2

62

引数なしのレスキューは、 StandardError のみをレスキューます。LoadError (見つからないファイルによって発生する) は、StandardErrorではなくScriptErrorです( http://blog.nicksieger.com/articles/2006/09/06/rubys-exception-hierarchyを参照)。したがって、MBO が示すように、 LoadErrorを明示的にレスキューする必要があります。

于 2010-03-17T10:10:46.383 に答える
57

レスキューするエラーを明示的に定義する必要があります。

begin
  require 'someFile.rb'
rescue LoadError
  puts "someFile.rb was not found, have you"
  puts "forgotten to specify the -I flag?"
  exit
end
于 2010-03-17T09:16:25.230 に答える