2009-09-22 10 views
19

en el siguiente código¿Cómo mostrar el tipo de error en ruby?

begin 
raise StandardError, 'message' 
#some code that raises a lot of exception 
rescue StandardError 
#handle error 
rescue OtherError 
#handle error 
rescue YetAnotherError 
#handle error 
end 

Quiero imprimir un aviso indicando el tipo y el mensaje del error sin la adición de declaración de impresión para cada una de las cláusulas de rescate, como

begin 
raise StandardError, 'message' 
#some code that raises a lot of exception 
rescue StandardError 
#handle error 
rescue OtherError 
#handle error 
rescue YetAnotherError 
#handle error 
??? 
print "An error of type #{???} happened, message is #{???}" 
end 

Respuesta

44
begin 
    raise ArgumentError, "I'm a description" 
rescue Exception => ex 
    puts "An error of type #{ex.class} happened, message is #{ex.message}" 
end 

Imprime: Ocurrió un error de tipo ArgumentError, el mensaje es Soy una descripción

+3

Y luego, si aún necesita un manejo específico para diferentes tipos de errores, puede hacer eso con un caso ... cuando. – cpm

+3

Mírelo, no atrape Excepción a menos que sea completamente consciente de lo que implica. Utilice rescue => ex en su lugar (Convención sobre la configuración) Como un cacher predeterminado. –

Cuestiones relacionadas