首页 / 知识
动态生成类的Ruby异常继承
2023-04-15 19:04:00

Ruby exception inheritance with dynamically generated classes我是Ruby的新手,所以在理解我遇到的这个奇怪的异常问题时遇到了一些麻烦。我正在使用ruby-aaws gem访问Amazon ECS:http://www.caliban.org/ruby/ruby-aws/。这定义了一个类Amazon :: AWS:Error:
这意味着,如果收到类似 现在这是奇怪的地方。我有一些看起来像这样的代码:
现在,如果
它说
这是怎么回事,我应该如何将AWS错误与其他类型的错误分开?我应该做类似的事情:
这似乎异常怪异。抛出的错误也不是AWSError类-像这样引发:
因此,我要从中查找 为了澄清,我有两个问题:
为什么NameError是一个内置的Ruby异常
如何最好地区分 好的,我会在这里帮助您: 首先,模块不是类,它允许您混合类中的行为。第二看下面的例子:
有点儿?告诉您,是的,Error确实具有所有A :: B :: Error行为(这是正常的,因为它包含A :: B :: Error),但是它不包括A :: B的所有行为,因此不是属于A :: B类型。 (鸭子打字) 现在,ruby-aws非常有可能重新打开NameError的超类之一,并在其中包含Amazon :: AWS:Error。 (猴子修补) 您可以通过以下方式以编程方式找到模块在层次结构中的位置:
关于你的第二个问题,我没有比这更好的了
(编辑-上面的代码无法按原样工作:名称包含模块前缀,而常量数组则不是这样。您绝对应该联系lib维护者,AWSError类对我来说更像是工厂类:/) 我在这里没有红宝石偏光,并且caliban网站被公司的防火墙阻止了,所以我无法进行进一步的测试。 关于include:可能是在StandardError层次结构上进行猴子修补的事情。我现在不确定,但是最有可能在每个上下文之外的文件根目录中执行的操作包括在Object或Object元类上的模块。 (这就是在IRB中会发生的情况,其中默认上下文是Object,不确定文件中是否存在) 从模块上的镐:
(编辑-我似乎无法使用此浏览器发表评论:/是,锁定平台) 只是想插话:我同意这是lib代码中的错误。它可能应该显示为:
好吧,据我所知:
正在创建一个以StandardError为基类的新类,因此它根本不会成为Amazon :: AWS :: Error。它只是在该模块中定义的,这可能就是为什么它是kind_of?亚马逊:: AWS ::错误。可能不是kind_of? Amazon :: AWS,因为可能不是出于kind_of的目的而嵌套模块? ? 抱歉,我不太了解Ruby中的模块,但是最肯定的是,基类将是StandardError。 更新:顺便说一下,从ruby文档:
您遇到的一个问题是
在这种情况下, 我希望这有助于解释更多幕后实际情况。 |
最新内容
相关内容
Python继承性和 java 是一样的吗?
Python继承性和 java 是一样的吗?,情况,代码,名称,第一,培训,初始化,函数,方法,定义,变量,聊完了多态,再来看看面向对象的另一个特征:继承性。python的继承
python的继承,通用,合法,培训,方法,函数,实例,定义,类型,可能会,这一点,派生类的定义如下所示:classDerivedClassName(BaseClassName):命名Bapython支持多继承吗
python支持多继承吗,培训,代码,不了,上边,函数,属性,例子,父亲,定义,母亲,python多继承单继承有时候可能满足不了我们所需的所以我们就会遇到python如何实现继承
python如何实现继承,培训,概念,名称,方法,定义,个人,属性,接口,过程,能力,python实现继承的方法:通过继承创建的新类称为“子类”或“派生类”python类的继承机制
python类的继承机制,代码,培训,方法,定义,对象,机制,口感,语法,圆括号,水果,继承是面向对象的三大特征之一,也是实现代码复用的重要手段。继承python允许继承吗
python允许继承吗,代码,培训,方法,定义,水果,对象,圆括号,苹果,语法,形状,继承是面向对象的三大特征之一,也是实现代码复用的重要手段。继承经python可以继承父类方法吗
python可以继承父类方法吗,培训,代码,名字,方法,动物,属性,编译器,这样的话,定义,里面,python继承,调用父类属性方法在python里面,继承一个类python可以多继承吗
python可以多继承吗,代码,培训,不了,方法,属性,父亲,孩子,前缀,上边,变量,python面向对象的主要好处就是代码的重用,实现这一特点通过继承,继承python继承的原理分析
python继承的原理分析,分析,合法,培训,原理,属性,顺序,经典,广度,线性,实例,python继承的原理分析原理分析1、子类会先于父类被检查。多个父关于oop:在Java中欺骗单一继承?
关于oop:在Java中欺骗单一继承?,关于oop:在Java中欺骗单一继承?,多重继承,继承,接口,欺骗,Cheat single inheritance in Java?
我听说有关于python:在Django中提供动态生成
关于python:在Django中提供动态生成的ZIP存档,关于python:在Django中提供动态生成的ZIP存档,选择,站点,动态生成,用户提供,Serving dyn关于io:使用Java 6中继承的stdin /
关于io:使用Java 6中继承的stdin / stdout / stderr启动进程,关于io:使用Java 6中继承的stdin / stdout / stderr启动进程,进程,启动,