我在Ruby 1.8.7中有一段代码
rescue SystemCallError
但该程序偶尔会以Errno::ETIMEDOUT
退出。是不是SytemCallError应该捕获所有Errno错误?
编辑:代码是
rescue SystemCallError, StandardError
感谢
答案 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>