【问题标题】:Using "try"+"finally" without "except" never generates any error [duplicate]在没有“except”的情况下使用“try”+“finally”永远不会产生任何错误[重复]
【发布时间】:2020-07-30 12:38:35
【问题描述】:

我认为如果我使用“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")

【问题讨论】:

    标签: python-3.x exception try-finally


    【解决方案1】:

    你可以在关于the try statement的部分找到文档:

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

    当然,它是一个记录在案的行为这一事实并不能完全解释其中的原因,所以我提出这个:函数只能以两种方式之一退出,即返回值或引发异常。它不能两者兼得

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 2018-03-19
      • 2023-02-21
      • 2012-06-02
      • 2011-02-06
      • 2021-02-27
      • 1970-01-01
      相关资源
      最近更新 更多