有一个原始异常类是StandardError
的子类,它的异常被抛出为raise RequiredArgumentMissingError 'message'
。在我的应用程序中,我需要更改此类,以便将其异常显示给用户ERROR: message
。如何更改原始异常类以将我的部分消息添加到其中?
原始异常类:
class Thor
class RequiredArgumentMissingError < StandardError
end
end
我的应用:
class CLI < Thor
class RequiredArgumentMissingError
# I need to prepend 'ERROR: ' to the original exception message here
end
end
编辑我没有在我的应用中明确提出RequiredArgumentMissingError
,它是由Thor
类中的其他类/方法引发的。所以我实际上不能从它继承,但我需要保留原始的类名,但更改实现。这有可能吗?
答案 0 :(得分:2)
请注意,即使CLI是Thor的子类,CLI::RequiredArgumentMissingError != Thor::RequiredArgumentMissingError
如果再次在CLI中定义内部类。 Thor类中的原始方法将引发Thor::RequiredArgumentMissingError
类。所以你想要重新定义这个类。实现所需目标的最简单方法是定义初始化方法。
class Thor
class RequiredArgumentMissingError
def initialize str
super("ERROR: "+str)
end
end
end
如果初始化已经定义并且很复杂,你可以使用别名并从覆盖的方法中调用原始初始化方法,如下所示:
class Thor
class RequiredArgumentMissingError
alias :orig_initialize :initialize
def initialize msg
orig_initialize("ERROR: "+msg)
end
end
end