Python中的类级别返回/退出

0 投票
2 回答
2036 浏览
提问于 2025-04-15 19:40

在我的应用程序中,有一个循环,每次循环都会创建一个类的实例,这个类会执行一些操作。在这个类里,我有一个信号定时器,当它被调用时,应该优雅地退出当前的循环回合,让下一个操作可以继续进行,而不会被打断。

但是现在的情况是,它会抛出一个异常,这个异常应该被一个try-except块捕获。不过,我有一个“loadFinished”的信号(我不知道它的ID是什么),在异常抛出后被调用,这导致了一个运行时异常,而这个异常我无法捕获。

有没有办法像结束一个函数那样,在类的层面上进行返回,如果出现了问题?或者有没有什么类似于sys.exit()的方式,只对这个类有效?

希望我说得够清楚。:) 谢谢你的帮助。

2 个回答

1

如果你说的是像 信号模块 里的信号,那么处理这些信号的方式并不是标准的。

你不能在处理信号的地方抛出一个异常,然后期待这个异常会在你正常的代码中出现。实际上,你应该尽量在处理信号的地方做得少一些,比如设置一个全局标志,或者通过管道发送一个消息。

1

克里斯托弗,

也许使用 定时器事件 类会更适合你。你可以在循环中检查事件是否被设置,然后退出当前的循环迭代:

if my_event.isSet():
    continue

我觉得你想做的事情其实不是一个好的设计。我看不出有什么办法可以把“异常”抛到另一个函数里。我猜你说的信号是指异步函数调用。当然,这也可以设置上面提到的事件。

撰写回答