A nice feature of Ruby is that exceptions are resumable like in Smalltalk, ie. you can have a "retry" statement in your exception handling that allows you to "try again". http://www.rubycentral.com/book/tut_exceptions.html