ruby – 如何解决某个命名空间下的所有异常?

前端之家收集整理的这篇文章主要介绍了ruby – 如何解决某个命名空间下的所有异常?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法拯救某个命名空间下的所有异常?

例如,我想拯救所有的Errno :: *异常(Errno :: ECONNRESET,Errno :: ETIMEDOUT).我可以继续在我的异常行上列出所有的东西,但是我想知道我是否可以做某事.

begin
  # my code
rescue Errno
  # handle exception
end

上面的想法似乎不起作用,因此有什么类似的可以工作吗?

解决方法

所有 Errno exceptions subclass SystemCallError

Module Errno is created dynamically to map these operating system errors to Ruby classes,with each error number generating its own subclass of SystemCallError. As the subclass is created in module Errno,its name will start Errno::.

所以你可以捕获SystemCallError,然后做一个简单的名字检查:

rescue SystemCallError => e
    raise e if(e.class.name.start_with?('Errno::'))
    # do your thing...
end

猜你在找的Ruby相关文章