捕获类中的所有异常

2024-10-03 11:16:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道是否有人会有一个想法,捕捉一个正在运行的线程中的所有异常。我的程序是由以下服务启动的

def main():
    global RUNNING

    signal.signal(signal.SIGINT, stopHandler)
    signal.signal(signal.SIGTERM, stopHandler)

    projectAlice = ProjectAlice()
    try:
        while RUNNING:
            time.sleep(0.1)
    except KeyboardInterrupt:
        pass
    finally:
        projectAlice.onStop()
        _logger.info('Project Alice stopped, see you soon!')

所以一个CTRL-C或者一个信号可以阻止它。ProjectAlice永远运行,并回答由Snips发送的mqtt主题。它永远使用paho mqtt和loop\u。因为它相当大,错误可能会发生,即使它们不应该发生。我尽可能多地覆盖,但今天,作为一个例子,谷歌翻译开始抛出错误,因为它不能再使用该服务(免费…)。未处理的错误。。。。因此线程崩溃,ProjectAlice保持原样。我想,因为在Java中每个示例都有可能,超级捕获所有异常并从那里进一步工作


Tags: 程序signalmaindef错误线程mqttglobal
2条回答

下面是一个覆盖python异常挂钩的简单解决方案,从而使您能够处理未捕获的异常:

import sys

def my_custom_exception_hook(exctype, value, tb):
    print('Yo, do stuff here, handle specific exceptions and raise others or whatever')

在实际代码开始之前,请执行以下操作:

sys.excepthook = my_custom_exception_hook

一个简单的except Exception:将捕获同一线程中除KeyboardInterrupt和SystemExit之外的所有异常。你知道吗

必须在线程中运行的代码中包含try: except ...:块,才能捕获线程中发生的异常。你知道吗

相关问题 更多 >