如何在异常发生后立即停止执行函数? [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]的主要内容,如果未能解决你的问题,请参考以下文章