try
e except
non causare mai la generazione di un'eccezione. Gestiscono semplicemente le eccezioni generate.
Se update
genera un'eccezione in caso di errore, except
gestirà l'eccezione, quindi il ciclo continuerà (a meno che tu non usi raise
nel except
clausola).
Se update
non genera un'eccezione in caso di errore, ma restituisce invece None
(o qualcosa del genere) e tu vuoi per generare un'eccezione, puoi usare:
if coll.update(...) is None: # or whatever it returns on failure
raise ValueError # or your custom Exception subclass
Nota che dovresti sempre specificare quale eccezione vuoi catturare e circondare solo le righe di codice in cui vuoi catturarla con try
, in modo da non nascondere altri errori nel codice:
for record in coll.find(<some query here>):
#Code here
#...
#...
try:
coll.update({ '_id' : record['_id'] },record,safe=True)
except SpecificException:
#Handle exception here
except OtherSpecificException:
#Handle exception here
else:
#extra stuff to do if there was no exception
Vedi il try
Dichiarazione
, Eccezioni integrate
e Errori ed eccezioni
.