Puede crear una subclase de una excepción para hacerlo más descriptivo, pero ¿cómo debe establecer el 'mensaje' predeterminado?Excepción de Ruby, clases de error
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
La primera es la Salida 'Un mensaje personalizado'
La segunda salida debe 'Usted ha desencadenado una MyError'
Cualquier sugerencia en cuanto a las mejores prácticas?
Just 'super' es suficiente. Si llama a 'super' sin una lista de argumentos, simplemente pasará todos los argumentos, por lo que, cuando realmente desee pasar * no * argumentos, debe llamar explícitamente a' super() '. –
@ JörgWMittag ¿Por qué todas las clases de error personalizadas heredan de 'StandardError'? ¿Alguna razón detrás de esto? –
@ArupRakshit Porque es seguro. Cada vez que se rescata de un error, debe ser un "StandardError" (o inferior), ya que los errores de nivel superior, como "Exception", pueden incluso lanzarse al golpear CTL-C, etc. Consulte esto para obtener más información http://rails-bestpractices.com/posts/2012/11/01/don-t-rescue-exception-rescue-standarderror – Sean