[英]Python exception handling - avoid writing 30+ try except blocks
我有一个从xml填充的字典。 字典有很多键值对。 我必须使用该字典中的值填充自定义对象。 如果字典中的一个键不存在或者值不是预期的类型,我想捕获异常,记录哪个键并继续执行。 有没有比使用try expect块更好的方法来围绕每一行。 具体来说,我想避免这种语法,它可以满足我的需求,但我想知道是否有更有效的解决方案:
try:
my_object.prop1 = dictionary['key1']
except Exception as e:
log.write('key1')
try:
my_object.prop2 = dictionary['key2']
except Exception as e:
log.write('key2')
try:
my_object.prop3 = dictionary['key3']
except Exception as e:
log.write('key3')
....
以编程方式执行。
props_keys = {
'prop1': 'key1'
'prop2': 'key2',
'prop3': 'key3'
}
for prop, key in props_keys.iteritems():
try:
setattr(myobj, prop, mydict[key])
except KeyError:
log(key)
for key, prop in [('key1', 'prop1'), ('key2', 'prop2'), ('key3', 'prop3')]:
try:
setattr(my_object, prop, dictionary[key])
except KeyError:
log.write(key)
请注意,我也在这里使用KeyError
; 尽量保持捕获的异常尽可能具体。 如果prop1
可能会引发自己的错误,请将其添加到预期错误列表中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.