多个 Try/Except 块
Multiple Try/Except blocks
我在分析来自另一个模块的字典输入的程序中有多个 try/except 块。我基本上使用 try/except (EAFP) 来检查输入中是否有某个键(否则,我想引发错误)。
我想知道是否有更通用的方法。
而不是
try:
xyz = a['some_key']
except:
print_error("Key 'some_key' was not defined")
几十次,如果有办法做类似的事情
try:
xyz = a['some_key']
xyz2 = a['some_key2']
...
except:
print_error("The key(s) that were not included were some_key, some_key2")
borked_keys = set()
for key in list_of_keys_needed:
try:
xyz = a[key]
except KeyError:
borked_keys.add(key)
#python3 variant
print("The following keys were missing:", ",".join(borked_keys))
#or, as suggested by jonrsharpe
if borked_keys: raise KeyError(",".join(str(i) for i in borked_keys))
#python 2 variant
print "The following keys were missing: " + ",".join(borked_keys)
#or
if borked_keys: raise KeyError ",".join(str(i) for i in borked_keys)
#if the keys are already strings, you can just use ",".join(borked_keys).
我在分析来自另一个模块的字典输入的程序中有多个 try/except 块。我基本上使用 try/except (EAFP) 来检查输入中是否有某个键(否则,我想引发错误)。
我想知道是否有更通用的方法。 而不是
try:
xyz = a['some_key']
except:
print_error("Key 'some_key' was not defined")
几十次,如果有办法做类似的事情
try:
xyz = a['some_key']
xyz2 = a['some_key2']
...
except:
print_error("The key(s) that were not included were some_key, some_key2")
borked_keys = set()
for key in list_of_keys_needed:
try:
xyz = a[key]
except KeyError:
borked_keys.add(key)
#python3 variant
print("The following keys were missing:", ",".join(borked_keys))
#or, as suggested by jonrsharpe
if borked_keys: raise KeyError(",".join(str(i) for i in borked_keys))
#python 2 variant
print "The following keys were missing: " + ",".join(borked_keys)
#or
if borked_keys: raise KeyError ",".join(str(i) for i in borked_keys)
#if the keys are already strings, you can just use ",".join(borked_keys).