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
.