Tengan en cuenta que save (sin !) no significa "guardar sin tirar
ninguna excepción", sino "guardar, y devolver false si falla por
causas esperadas (i.e. falla de validación)". Otro tipo de errores
(como una falla de conexión a la DB) todavía levantarían excepciones
en ese caso.

De todas formas no todas las excepciones están para ser manejadas.
Muchas tienen que poder pasar para informar que hay algo que no está
andando bien (si la conexión a la DB falla, está bien que la excepción
salga del backtrace para informarnos que tenemos que chequear el motor
de base de datos).

2008/12/1 Lucas Sallovitz <[EMAIL PROTECTED]>:
> Viéndolo desde el punto de vista del código entendible, en el caso de
> "if model.save" uno sabe que significa porque en active record es algo
> muy pero muy común, en cambio:
>
> model.save!
> rescue ::ActiveRecord::RecordInvalid
>
> Es absolutamente claro que es lo que está ocurriendo por el nombre de
> la clase. El problema es que si uno quiere tratar varias excepciones
> diferentes, y el cdigo que trata cada una es muy largo (no debería
> ocurrir) se puede transformar en un case gigante también bastante
> complicado de seguir (al menos tan complicado como una serie de if
> anidados).
>
> Alguien leyó lo de Ioke? apunta justamente a eso.
>
> http://olabini.com/blog/2008/10/condition-system-in-ioke/
>
> Saludos. Lucas.
> _______________________________________________
> Ruby mailing list
> [email protected]
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a