如何从“需求”中拯救:没有这样的文件加载在ruby?

我试图从“require”中解救出来:没有这样的文件要加载到ruby中,以便提示用户指定-I标志,以防他忘记了。 基本上,代码如下所示:

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

如果没有findsomeFile.rb ,我期望rescue部分接pipe执行,但我的假设是错误的。

没有论据的救援只拯救StandardError s。 LoadError (由未find的文件引发)不是StandardError,而是ScriptError (请参阅http://blog.nicksieger.com/articles/2006/09/06/rubys-exception-hierarchy )。 因此,您必须明确地解救LoadError ,正如MBO所示。

你必须明确地定义你想从中拯救的错误。

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