2010-04-12 18 views
47

Fondamentalmente, voglio fare qualcosa di simile (in Python, o simili linguaggi imperativi):Rubino: Continua un ciclo dopo la cattura un'eccezione

for i in xrange(1, 5): 
    try: 
     do_something_that_might_raise_exceptions(i) 
    except: 
     continue # continue the loop at i = i + 1 

Come faccio a fare questo in Ruby? So che ci sono i redo e retry parole chiave, ma sembrano di ri-eseguire il blocco "provare", invece di continuare il ciclo:

for i in 1..5 
    begin 
     do_something_that_might_raise_exceptions(i) 
    rescue 
     retry # do_something_* again, with same i 
    end 
end 

risposta

93

In Ruby, continue è farro next.

+0

Grazie. Ho guardato nei posti sbagliati. OTZ – Santa

+0

@Thayne [ortografia inglese] (https://en.wiktionary.org/wiki/spelt#Etymology_1) non fa errori ortografici! Il mondo non gira intorno agli Stati Uniti. :-) (Non mi sento male. Ripristino le correzioni di americanizzazione tutto il tempo.) –

+1

Mi chiedo, non mi sono reso conto che il farro era un'ortografia valida in inglese britannico. – Thayne

44
for i in 1..5 
    begin 
     do_something_that_might_raise_exceptions(i) 
    rescue 
     next # do_something_* again, with the next i 
    end 
end 
+0

potresti anche suggerire un modo per emettere l'eccezione che si è verificata. – whizcreed

+0

rescue => e e contiene oggetti di eccezione, è possibile e.message, e.backtrace – user1136228

Problemi correlati