我使用pymongo python模块工作mongodb数据库.我的代码中有一个函数,当调用时更新集合中的记录,如下所示.
for record in coll.find(<some query here>):
#Code here
#...
#...
coll.update({ '_id' : record['_id'] },record)
现在,如果我修改代码如下:
for record in coll.find(<some query here>):
try:
#Code here
#...
#...
coll.update({ '_id' : record['_id'] },record,safe=True)
except:
#Handle exception here
这是否意味着当更新失败或没有抛出异常时将抛出异常,更新只会跳过导致问题的记录?
请帮忙
谢谢
解决方法:
尝试,除非永远不会引发异常.他们只是处理抛出的异常.
如果update在失败时抛出异常,则except将处理异常,然后循环将继续(除非你在except子句中使用raise).
如果更新不会在失败时抛出异常,而是返回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
Statement,Built-in Exceptions和Errors and Exceptions.