0

我在 Ruby 1.8.7 中有一段代码

 rescue SystemCallError 

但程序偶尔会以Errno::ETIMEDOUT. SytemCallError 不应该捕获所有 Errno 错误吗?

编辑:代码是

 rescue SystemCallError, StandardError

谢谢

4

1 回答 1

1

它当然应该是!您确定这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>
于 2012-10-30T18:57:32.533 回答