加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 20:14:26 所属栏目:百科 来源:网络整理
导读:有没有办法拯救某个命名空间下的所有异常? 例如,我想拯救所有的Errno :: *异常(Errno :: ECONNRESET,Errno :: ETIMEDOUT).我可以继续在我的异常行上列出所有的东西,但是我想知道我是否可以做某事. begin # my coderescue Errno # handle exceptionend 上面
有没有办法拯救某个命名空间下的所有异常?

例如,我想拯救所有的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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读