try и except никога не предизвиквайте хвърляне на изключение. Те просто обработват хвърлени изключения.
Ако update хвърля изключение при повреда, except ще обработи изключението, след което цикълът ще продължи (освен ако не използвате raise в except клауза).
Ако update не хвърля изключение при повреда, а вместо това връща None (или нещо подобно), и виискате за да хвърлите изключение, можете да използвате:
if coll.update(...) is None: # or whatever it returns on failure
raise ValueError # or your custom Exception subclass
Обърнете внимание, че винаги трябва да указвате кое изключение искате да хванете и да ограждате само редовете от код, където искате да го хванете с try , така че да не скриете други грешки в кода си:
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
Вижте try Изявление
, Вградени изключения
и Грешки и изключения
.