【问题标题】:Would codes after try and except be executed? [closed]try 和 except 之后的代码会被执行吗? [关闭]
【发布时间】:2014-05-26 06:31:29
【问题描述】:

假设这样的代码

try:
    objectToBeUsed = func1()
except:
    objectToBeUsed = false

nextValue = func2(objectToBeUsed)

是否会执行最后一行,无论是否捕获到异常?我需要在这里使用finally吗?

【问题讨论】:

  • 嗯...这取决于您调用func2 的结果,无论是在tryexcept 上传递的任何内容。但是nextValue 将具有 some 值。我无法从上下文中推断出什么。
  • @Makoto 我想我的问题并不清楚。我想知道整行是否会被执行。
  • 是否会执行最后一行,是否捕获到异常? 是的。 这里需要用finally吗?不需要
  • 你自己试试吧?我认为这是获得答案的最简单方法。
  • @Christian 我的代码似乎可以工作,但我不确定,因为我正在运行插件。

标签: python exception


【解决方案1】:

finally 通常用于执行清理代码,无论是否引发了异常。如果我理解正确,调用func2() 是您正常程序流程的一部分,不被视为清理。所以在这种情况下你不应该使用finally

在此处阅读有关 python 异常处理的更多信息:https://docs.python.org/2/tutorial/errors.html

【讨论】:

    【解决方案2】:

    是的,它将被执行。

    但是,这可能正是为什么使用没有特定异常类的裸 except 是一个坏主意的原因。在 any 异常的情况下,您很少愿意继续愉快地前进。例如,异常可能是 KeyboardInterrupt。

    您捕获表明您确实想要设置objectToBeUsed = False 的特定异常,如果您无法处理它们,则让其他异常继续传播。

    【讨论】:

      猜你喜欢
      • 2017-10-21
      • 2013-08-08
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      • 2015-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多