我在工作中因为经常需要正则解析大量结构不一的文本,所有异常捕获用的非常频繁,甚至需要深层嵌套才能完成最终提取,所以写出的异常捕获代码异常难看,大概类似于这种吧。。。。
因为深受其害,后来百般寻找解决办法,还真让我找到了可行方案。总体思想就是将所有可能性通过循环的方式捕获异常,测试例子大概是这样:
def a():
print(name_a)
def b():
# print(name_b)
aaa = 123
return aaa
def c():
print(name_c)
list1 = [a, b, c]
aaa = ''
# 循环所有可能性
for x in list1:
try:
aaa = x()
except Exception as f:
print(f)
continue
# 如果遇到执行成功的情况,则跳出循环
else:
break
# 如果循环全部还是没有遇到成功的情况,则执行
else:
print(name2)
print(aaa)