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
.