使用不带"except"的 "try" + "finally"永远不会产生任何错误



我认为,如果我使用"try",只使用"finally"else,而不使用任何"except",如果"try"语句无法执行,则应该执行"finally"语句,但在那之后,应该在执行中显示错误,但在这个简单的代码中,我故意强制执行无效操作,错误永远不会跳过。为什么?

def division_peligrosa(a, b):
try:
a = float(a); b = float(b)
return a/b
finally:
return "Aquí va haber un error..."
print (division_peligrosa(5,0))
print (division_peligrosa("dividendo",28.3))
print ("nFin del programa, ¡pero nada ocurre!n")

您可以在关于的部分中找到try语句的文档:

如果finally子句执行return、break或continue语句,则会丢弃保存的异常。

当然,它是一个有文档记录的行为这一事实并不能完全解释推理,所以我提供了以下内容:函数只能以两种方式之一退出,即返回值或引发异常。它不能同时执行

由于finally块通常用作清理处理程序,因此返回在这里具有优先级是有意义的。您确实有机会在finally中重新引发任何异常,只需不使用return语句即可。

最新更新