我在 Ruby 1.8.7 中有一段代码
rescue SystemCallError
但程序偶尔会以Errno::ETIMEDOUT
. SytemCallError 不应该捕获所有 Errno 错误吗?
编辑:代码是
rescue SystemCallError, StandardError
谢谢
我在 Ruby 1.8.7 中有一段代码
rescue SystemCallError
但程序偶尔会以Errno::ETIMEDOUT
. SytemCallError 不应该捕获所有 Errno 错误吗?
编辑:代码是
rescue SystemCallError, StandardError
谢谢
它当然应该是!您确定这rescue
是在抛出错误的路径中吗?
>> Errno::ETIMEDOUT.superclass
SystemCallError
>> Errno::ETIMEDOUT.new.is_a? SystemCallError
true
还:
>> begin
?> raise Errno::ETIMEDOUT, "Fail, please"
>> rescue SystemCallError, StandardError
>> puts "Caught #{$!.inspect}"
>> end
Caught #<Errno::ETIMEDOUT: Operation timed out - Fail, please>