嗨有没有办法从抛出异常的地方继续? 例如,我有以下psudo代码
unique code 1
unique code 2
unique code 3
如果我想忽略任何唯一代码语句的异常,我将不得不这样做:
try:
#unique code 1
except:
pass
try:
#unique code 2
except:
pass
try:
#unique code 3
except:
pass
但这对我来说并不优雅,对于我的生活,我不记得上次我是如何解决这类问题的......我想要的就是
try:
unique code 1
unique code 2
unique code 3
except:
continue from last exception raised
更新: 原因:我问这个问题的原因是上面3行代码共享相同类型的异常,比方说,从数组中提取信息,在这种特殊情况下,我并不真正关心值的例外而不是数组。
答案 0 :(得分:2)
将每个代码段包装到一个函数中,然后尝试在for循环中调用每个代码:
def code1():
#unique code 1
def code2():
#unique code 2
def code3():
#unique code 3
for section in [code1, code2, code3]:
try:
section()
except:
pass
编辑:如果您仍然在寻找另一种方式,您可以使用装饰器使每次通话“安全”购买返回任何错误而不是扔掉它们。不确定这是否真的是pythonic或做事的好方法,但这是一种方式:
def safe_call(fn):
def wrapper(*args, **kwargs):
try:
return fn(*args, **kwargs)
except Exception as error:
return error
return wrapper
@safe_call
def code1():
#unique code 1
@safe_call
def code2():
#unique code 2
@safe_call
def code3():
#unique code 3
code1()
code2()
code3()
答案 1 :(得分:0)
我们可以使用 while 循环:
#!/urs/bin/env python
check = 0
while True:
try:
if check == 0:
#unique_code_one ()
check += 1
if check == 1:
#unique_code_two ()
check += 1
if check == 2:
#unique_code_three()
except:
check = 2