是否可以使用Ruby API来引发to_str中的异常?

时间:2012-02-24 07:14:41

标签: ruby string

考虑一个像这样的小型Ruby类:

class C
    def to_str
        raise
    end
end

to_str引发异常是否常见和/或可接受,或者是否存在可能会破坏此类C对象的现有库或习语?

一些背景知识:我们的软件提供了一些Ruby模块(用C实现)。我们提供的一些类实际上是字符串,因此它们提供to_str实现。不幸的是,定义此to_str方法的代码会导致我们软件的其他(不相关)组件出现错误。我们正在考虑的一个解决方法是总是在我们提供的所有类上定义to_str - 但是在运行时引发异常,以防手头的类型实际上不是字符串。我个人认为这是一个坏主意(例如,我们不能在不破坏向后兼容性的情况下收回它),但有些同事不同意。所以我正试图收集支持我的立场的论据。

在研究了Ruby C源代码之后,根据一个类是否定义了一个to_str方法,有些地方Ruby的行为有所不同 - 该方法的绝对存在使Ruby认为它是一个'字符串'。也许这种对to_str是否受支持的测试方式很常见,并且有流行的Ruby库使用它,然后断言实际调用to_str不会引发异常?

0 个答案:

没有答案
相关问题