如何在异常发生后立即停止执行函数? [Python]

Posted

技术标签:

【中文标题】如何在异常发生后立即停止执行函数? [Python]【英文标题】:How to stop the execution of a function right after the exception happened? [Python] 【发布时间】:2020-04-30 08:01:20 【问题描述】:

假设我有以下代码:

def main():
  try:
    int('string_for_ValueError')
  except ValueError:
    print('How to stop further execution right here?')
  print('Executed')

main()

如你所见,print('Executed') 行无论如何都会被执行。我的目标是在except ValueError 被捕获后立即停止执行当前函数。

那么,问题是 - 如何做到这一点?

更新

这个函数是多线程算法的一部分。因此,如果由于except ValueError 而无法执行此函数 - 此函数应该停止并且不返回任何内容。但在那之后其他线程应该可以工作。

【问题讨论】:

return一样停止当前函数的执行? print('Executed')放在int('string_for_ValueError')之后或在print('How to stop further execution right here?')之后添加return @Ry- 此函数是多线程算法的一部分。因此,如果由于except ValueError 而无法执行此函数 - 此函数应该停止并且不返回任何内容。之后购买其他线程应该可以工作。 好吧,使用return 不需要返回非None 值。仅return 行是否满足您的需求? @BenyGj [AT]Ry- 它运行良好!非常感谢你。这正是我所需要的。 【参考方案1】:

您可以简单地通过消息引发错误以停止执行。如果您使用 try ,除非您基本上希望程序在发现错误时不要停止执行。 如果你真的想这样做,你可以这样做, 但你可以通过几种方式做到这一点。我的问题是,如果你想停止程序,为什么会出现这个错误?

更新后编辑:您可以在函数中添加返回值。

def main():
  try:
    int('string_for_ValueError')
  except ValueError:
    print('How to stop further execution right here?')
    return "to something"
  print('this line not executed because function sees the return')

main()

【讨论】:

【参考方案2】:

您可以使用exit("Failure") 退出 Python 脚本,其中字符串是可选消息。

【讨论】:

感谢您的建议。不幸的是,它不能满足我的需求,因为它会停止执行整个脚本(而不仅仅是执行特定函数)

以上是关于如何在异常发生后立即停止执行函数? [Python]的主要内容,如果未能解决你的问题,请参考以下文章

在 try 块中抛出异常后,catch 块不会立即执行

别样JAVA学习继承下(2.3)异常下

继续执行异常

python:我怎么知道发生了啥类型的异常?

go语言之抛出异常

python 这意味着无论何时引发未捕获的异常,我都会立即得知发生了什么(完全回溯)。