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?
Se vuoi aggiornamenti su Ruby inserisci la tua email nel box qui sotto: