try :
doSomething1()
doSomething2()
doSomething3()
except Exception as e :
doSomething4()
}
我知道在上面的代码中如果doSomething1()
失败doSomething2() & doSomething3()
将无法执行,它会跳转到doSomething4()
。
但是我想要的是,如果doSomething1() or doSomething2() or doSomething2()
中的任何一个失败,整个尝试都不会被执行并跳转到doSomething4()
实际上我正在使用数据库,在try
我创建了两行,但有时第二行失败,第一行没有,但我不希望第二行在第二行失败时保存。我希望他们两个一起执行或失败。怎么样?
答案 0 :(得分:0)
如果doSomething1
,doSomething2
和doSomething3
方法中的任何一个失败,那么您希望跳过try
块,doSomething4
方法是运行
嗯,这在逻辑上是不可能的。如果doSomething1
失败,那么它已被执行,因此不能再完全跳过整个try
。 doSomething2
也是如此:如果失败,则表明它已经运行,doSomething1
没有失败,因此只能跳过doSomething3
。
以下是您可以实施的一些不同行为。
行为1
try:
doSomething1()
doSomething2()
doSomething3()
except:
doSomething4()
尝试运行doSomething1
,doSomething2
和doSomething3
。如果其中一个失败,则跳过以下内容,并执行doSomething4
。否则,跳过doSomething4
。
行为2
try:
doSomething1()
doSomething2()
doSomething3()
finally:
doSomething4()
尝试运行doSomething1
,doSomething2
和doSomething3
。如果其中一个失败,则跳过以下内容。在任何情况下,doSomething4
都会在最后执行。
行为3
try:
doSomething1()
except:
try:
doSomething2()
except:
pass
else:
try:
doSomething3()
except:
pass
else:
doSomething4()
else:
try:
doSomething2()
except:
try:
doSomething3()
except:
pass
else:
doSomething4()
else:
try:
doSomething3()
except:
doSomething4()
如果doSomething1
,doSomething2
和doSomething3
中只有一个失败,则会运行doSomething4
。这种行为可以通过更简单的异常管理以更简单的方式实现,但此代码的优点是仅使用try
,except
和else
。
行为4
try:
doSomething1()
doSomething2()
doSomething3()
doSomething4()
这与您问题的标题相对应。如果doSomething1
,doSomething2
和doSomething3
都没有失败,则doSomething4
会运行;否则,它不会运行。