try
och except
aldrig orsaka ett undantag. De hanterar helt enkelt slängda undantag.
Om update
kastar ett undantag vid misslyckande, except
kommer att hantera undantaget, sedan fortsätter loopen (om du inte använder raise
i except
klausul).
Om update
ger inget undantag vid misslyckande, utan returnerar istället None
(eller något liknande), och du vill för att skapa ett undantag kan du använda:
if coll.update(...) is None: # or whatever it returns on failure
raise ValueError # or your custom Exception subclass
Observera att du alltid ska ange vilket undantag du vill fånga, och bara omge kodraderna där du vill fånga det med try
, så att du inte döljer andra fel i din kod:
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
Se try
Uttalande
, Inbyggda undantag
och Fel och undantag
.