Вы можете создать подкласс исключения, чтобы сделать его более наглядным, но как вы должны установить сообщение по умолчанию?Исключительные классы ошибок Ruby's
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() '. –
@ JörgWMittag Почему все пользовательские классы ошибок наследуются от 'StandardError'? Любая причина этого? –
@ArupRakshit Потому что он безопасен. Всякий раз, когда вы спасаете от ошибок, он должен быть «StandardError» (или ниже), поскольку ошибки более высокого уровня, такие как «Исключение», могут быть даже сброшены при нажатии CTL-C и т. Д. См. Это для получения дополнительной информации http://rails-bestpractices.com/posts/2012/11/01/don-t-rescue-exception-rescue-standarderror – Sean