捕获类中的所有异常

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


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 主题。它使用带有 loop_forever 的 paho-mqtt。由于它非常大,因此可能会发生错误,即使它们不应该发生。我尽可能多地覆盖,但今天,作为一个例子,google-translate 开始抛出错误,因为它不能再使用该服务(免费......)。未处理的错误......所以线程崩溃,ProjectAlice 保持原样。我想,因为 Java 中的每个示例都可以超级捕获所有异常并从那里进一步工作


慕后森
浏览 151回答 2
2回答

慕标琳琳

这是一个覆盖 python 异常钩子的简单解决方案,从而使您能够处理未捕获的异常:import sysdef 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 ...:在线程中运行的代码中包含块以捕获线程中发生的异常。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python