Errno :: ETIMEDOUT没有被SystemCallError捕获

时间:2012-10-30 18:55:01

标签: ruby exception-handling

我在Ruby 1.8.7中有一段代码

 rescue SystemCallError 

但该程序偶尔会以Errno::ETIMEDOUT退出。是不是SytemCallError应该捕获所有Errno错误?

编辑:代码是

 rescue SystemCallError, StandardError

感谢

1 个答案:

答案 0 :(得分: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>