Zeq*_*uez 4 ruby error-handling exception-handling ruby-on-rails conventions
例如,如果我有一个传递所有验证的图像,例如尺寸,尺寸,类型等,但是当我必须处理它时,由于某种未知的原因,ImageMagick无论如何都会抛出一个错误...我应该如何处理?
mu *_*ort 13
来自Active Record Validations和Callbacks Guide:
如果在回调方法之前有任何返回方法
false
或引发异常,则执行链将停止并发出ROLLBACK [...]
所以,你可以让异常泡成的ActiveRecord或者你可以捕获它自己,它翻译成东西,使你的应用的上下文中的意义,并返回false
.你可以在before_save
回调中注册错误,所以这样的事情可能有意义:
before_save :do_magick_things
private
def do_magick_things
# ImageMagick stuff...
true
rescue ImageMagickError, FatalImageMagickError => e
errors.add(:base, 'Some sort of sensible version of e.message')
false
end
Run Code Online (Sandbox Code Playgroud)
如果你可以将ImageMagick错误翻译成对最终用户有意义的东西,那么捕获和翻译ImageMagick异常(如同do_magick_things
)可能会最有意义; 将异常转换为错误消息还允许调用者在save!
需要异常时使用,或者save
如果他们不需要异常.
归档时间: |
|
查看次数: |
2692 次 |
最近记录: |