Można utworzyć podklasę wyjątku, aby była bardziej opisowa, ale jak ustawić domyślną "wiadomość"?Klasy błędów wyjątków Rubiego
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
Pierwszy powinien wypisać „niestandardowy komunikat”
Drugie wyjście powinno „pan wywołał MyError”
jakieś sugestie co do najlepszych praktyk?
Wystarczy "super". Jeśli nazwiesz 'super' bez listy argumentów, po prostu przekaże wszystkie argumenty, dlatego, kiedy faktycznie chcesz przekazać * no * argumenty, musisz jawnie wywołać' super() '. –
@ JörgWMittag Dlaczego wszystkie niestandardowe klasy błędów dziedziczą z 'StandardError'? Jakiś powód za tym? –
@ArupRakshit Ponieważ jest bezpieczny. Za każdym razem, gdy uratujesz z błędami, powinno to być 'StandardError' (lub niższy), ponieważ błędy wyższego poziomu, takie jak' Exception', mogą być rzucane nawet podczas uderzania CTL-C itd. Zobacz więcej informacji http://rails-bestpractices.com/posts/2012/11/01/don-t-rescue-exception-rescue-standarderror – Sean