try i except nigdy nie powodują zgłaszania wyjątku. Po prostu obsługują zgłoszone wyjątki.
Jeśli update zgłasza wyjątek w przypadku niepowodzenia, except obsłuży wyjątek, wtedy pętla będzie kontynuowana (chyba że użyjesz raise w except klauzula).
Jeśli update nie zgłasza wyjątku w przypadku niepowodzenia, ale zamiast tego zwraca None (lub coś w tym stylu) i chcesz aby zgłosić wyjątek, możesz użyć:
if coll.update(...) is None: # or whatever it returns on failure
raise ValueError # or your custom Exception subclass
Pamiętaj, że zawsze powinieneś określić, który wyjątek chcesz przechwycić, i otoczyć tylko wiersze kodu, w których chcesz go przechwycić, za pomocą try , aby nie ukrywać innych błędów w kodzie:
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
Zobacz try Oświadczenie
, Wbudowane wyjątki
oraz Błędy i wyjątki
.