try dan except tidak pernah menyebabkan pengecualian dilempar. Mereka hanya menangani pengecualian yang dilemparkan.
Jika update melempar pengecualian pada kegagalan, except akan menangani pengecualian, maka loop akan berlanjut (kecuali jika Anda menggunakan raise di except klausa).
Jika update tidak memberikan pengecualian pada kegagalan, tetapi mengembalikan None (atau sesuatu seperti itu), dan Anda ingin untuk melempar pengecualian, Anda dapat menggunakan:
if coll.update(...) is None: # or whatever it returns on failure
raise ValueError # or your custom Exception subclass
Perhatikan bahwa Anda harus selalu menentukan pengecualian mana yang ingin Anda tangkap, dan hanya mengelilingi baris kode di mana Anda ingin menangkapnya dengan try , sehingga Anda tidak menyembunyikan kesalahan lain dalam kode Anda:
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
Lihat try Pernyataan
, Pengecualian Bawaan
, dan Kesalahan dan Pengecualian
.