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