在except块后执行try块的一部分
我知道这个问题听起来有点奇怪,可能也没有答案。
我想在捕获到异常并执行完异常处理块之后,继续执行try块中的剩余代码。
举个例子:
[...]
try:
do.this()
do.that()
[...]
except:
foo.bar()
[...]
假设do.this()
抛出了一个异常,这个异常被foo.bar()
处理了,然后我想继续执行do.that()
中的代码。我知道没有GOTO语句,但也许可以找到一些黑科技或者变通的方法!
谢谢!
8 个回答
1
在编程中,有时候我们需要让程序在特定的条件下执行某些操作。比如说,当用户输入一个数字时,我们可能想要检查这个数字是否在一个特定的范围内。如果在范围内,我们就执行某个任务;如果不在范围内,程序可能会给出一个提示,告诉用户输入不正确。
这种情况下,我们通常会使用“条件语句”。条件语句就像是一个判断的开关,它会根据你给出的条件来决定程序接下来要做什么。简单来说,就是“如果……那么……否则……”的逻辑。
在编程中,条件语句可以帮助我们控制程序的流程,让它更加智能和灵活。通过合理使用这些语句,我们可以让程序根据不同的输入做出不同的反应。
fcts = [do.this, do.that]
for fct in fcts:
try:
fct()
except:
foo.bar()
2
使用finally块?我是不是漏掉了什么?
[...]
try:
do.this()
except:
foo.bar()
[...]
finally:
do.that()
[...]
5
一个 try... except...
代码块是用来捕捉 一个 异常的。这就是它的作用。它会先执行 try
里面的代码,如果出现了异常,就会在 except
里面处理这个异常。你不能在 try
里面抛出多个异常。
这样设计是有意为之:这个结构的目的是让你明确地处理发生的异常。如果你在 try
的末尾返回,就违反了这个原则,因为那样 except
就会处理多个事情。
你应该这样做:
try:
do.this()
except FailError:
clean.up()
try:
do.that()
except FailError:
clean.up()
这样你抛出的任何异常都会被明确处理。