try
và except
không bao giờ gây ra một ngoại lệ được ném ra. Chúng chỉ đơn giản là xử lý các ngoại lệ đã ném.
Nếu update
ném một ngoại lệ khi không thành công, except
sẽ xử lý ngoại lệ, sau đó vòng lặp sẽ tiếp tục (trừ khi bạn sử dụng raise
trong except
mệnh đề).
Nếu update
không đưa ra một ngoại lệ khi thất bại, nhưng thay vào đó trả về None
(hoặc thứ gì đó tương tự) và bạn muốn nó để đưa ra một ngoại lệ, bạn có thể sử dụng:
if coll.update(...) is None: # or whatever it returns on failure
raise ValueError # or your custom Exception subclass
Lưu ý rằng bạn phải luôn chỉ định ngoại lệ nào bạn muốn bắt và chỉ bao quanh các dòng mã mà bạn muốn bắt bằng try
, vì vậy bạn không ẩn các lỗi khác trong mã của mình:
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
Xem try
Tuyên bố
, Ngoại lệ Tích hợp sẵn
và Lỗi và Ngoại lệ
.