Ruby offre una gestione delle eccezioni né più né meno come altri linguaggi.
Nella sua classicità , tuttavia, integra una caratteristica molto singolare che non ricordo in altri linguaggi: il comando retry
.
Comincio dicendo che la migliore spiegazione sulla gestione delle eccezioni fino ad oggi l'ho letta sul libro Programming in Ruby.
Potete trovare una trascrizione del capitolo a questo indirizzo.
Il comando retry
consente di ripetere il codice contenuto tra begin/rescue
che ha generato l'eccezione. La sua utilità ? Osservate questo codice.
@esmtp = true begin # First try an extended login. If it fails because the # server doesn't support it, fall back to a normal login if @esmtp then @command.ehlo(helodom) else @command.helo(helodom) end rescue ProtocolError if @esmtp then @esmtp = false retry else raise end end
Si tenta di inviare un'email utilizzando il sistema di login esteso. Se il comando non va a buon fine, si cambia la proprietà di invio e si ripete l'invio. Se anche in questo caso la richiesta fallisce probabilmente il problema è altrove e si rilancia l'eccezione ad un livello superiore.
Ottima idea, a mio avviso. Voi che dite? Sapete di altri linguaggi che la implementano?