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
