function bool_return():
do in case of errors goto Errors:
var r = print("foo") < this is the statement in the try block
print("ola") < this is the statement in the finally one
return r
Errors:
do nothing < this is the pass instruction.
var r = print ("ola")
return r
print(bool_return())
暂时忽略可能不正确的return语句,问题的罪魁祸首是解释器如何运行语句:
return print("foo")
它被分成两部分
var r = print("foo") < this is the statement in the try block
return r
然后在返回之前执行finally的内容
var r = print("foo") < this is the statement in the try block
print ("ola")
return r
最后一块是我们编写代码来关闭与其他服务器的连接。如果我们从语句返回,我们将打开连接,以便在退出函数之前执行它。 我们可以检查是否在最后一个块中写入一个返回,并尝试执行哪个块
你的代码
正在使用
finally
子句。finally子句在退出拥有的try
/except
块之前执行。这意味着您可能会被提交到以下(伪代码!):暂时忽略可能不正确的
return
语句,问题的罪魁祸首是解释器如何运行语句:它被分成两部分
然后在返回之前执行finally的内容
这是因为
try
块的语义如下try
块中包含的任何内容。如果运行时没有错误,则存储返回值(如果存在),然后运行finally
块的内容。如果这里没有出现错误,并且我们有一个返回值,只需返回存储的返回值即可try
块有错误,则运行except
块中的内容(如果存在)。如果此处没有错误,则存储返回值(如果存在),运行finalize
块,如果此处没有错误,则仅返回存储的返回值except
块出错,则停止执行并运行finally
块。然后将异常传播到外部块李>try
块。上述步骤递归重复,直到异常得到处理或到达解释器try
块。在后一种情况下,应用程序被停止,异常以通常的traceback
语法打印到控制台李>这只是为了让您了解它是如何工作的。某些细节可能会遗漏或可能不是100%正确。如果您想了解更多信息,可以在W3C玩异常游戏并了解更多here
返回某些内容是函数所能做的最后一件事。在返回某些内容之后,Python将继续执行它在脚本之前所做的操作或结束脚本
如果Python会立即返回,那么函数就到此结束。无论发生什么情况,finally块都被认为是运行的,因此它必须首先运行,即使原始返回丢失
相关问题 更多 >
编程相关推荐