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
Изявление
, Вградени изключения
и Грешки и изключения
.