46

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

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 s。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 回答