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
.