大家,我的python代码是这样的:
try:
foo1()
except FooError1:
try:
foo2()
except FooError2:
dosth()
raise raisesth()
我想知道在python中是否存在对多条件或复合条件的try-except支持,因此我的代码可以简化为:
try:
foo1()
foo2()
except FooError1 and FooError2:
dosth()
raise raisesth()
谢谢!
答案 0 :(得分:1)
我建议你阅读python documentation。
如果dosth
或foo1()
在foo2()
中引发您想要处理的异常,我假设您希望dosth()
被调用,就像您的第二个代码块一样。
try:
foo1()
foo2()
except (FooError1, FooError2):
dosth()
raise raisesth()
正如您在and
声明中提出except
条件一样,我记得您提出异常必须,只要它加注或执行将停止,您就可以'告诉口译员继续等待FooError2
来......
答案 1 :(得分:1)
例外和; - )。
def foo1():
return 1/0
def foo2():
return s
def do_something():
print("Yes!")
def exception_and(functions, exceptions, do_something):
try:
functions[0]()
except exceptions[0]:
if len(functions) == 1:
do_something()
else:
exception_and(functions[1:], exceptions[1:], do_something)
# ================================================================
exception_and([foo1, foo2], [ZeroDivisionError, NameError], do_something)
# Behaves the same as:
try:
foo1()
except ZeroDivisionError:
try:
foo2()
except NameError:
do_something()