32
您可以创建异常的子类以使其更具描述性,但应该如何设置默认的“消息”?Ruby的异常错误类
class MyError < StandardError
# default message = "You've triggered a MyError"
end
begin
raise MyError, "A custom message"
rescue Exception => e
p e.message
end
begin
raise MyError
raise Exception => e
p e.message
end
首先应该输出“自定义消息”
第二要输出“你已经引发了MyError”
任何建议,最好的做法?
只要'超级'就够了。如果你在没有参数列表的情况下调用'super',它只会传递所有参数,这就是为什么当你真的想传递* no *参数时,你必须明确地调用'super()'。 – 2010-08-02 01:04:03
@JörgWMittag为什么所有的自定义错误类继承自“StandardError”?背后有什么理由? – 2014-12-27 11:34:26
@ArupRakshit因为它的安全。无论何时从错误中恢复,它应该是一个“StandardError”(或更低),因为当击中CTL-C时甚至可能抛出更高级别的错误,例如“Exception”。请参阅http://rails-bestpractices.com。/posts/2012/11/01/don-t-rescue-exception-rescue-standarderror – Sean 2015-01-07 22:36:48