小编emd*_*ash的帖子

缺点是捕获所有异常(在最高程序级别,然后重新提升,只是在退出之前记录?)

我在远程计算机上有一个长时间运行的程序,并希望确保(1)我有任何导致它终止的异常的记录,以及(2)如果终止,则通知某人.有没有人看到我使用的方法的缺点?(或建议更好的?)

我在这里阅读了Python文档和许多与例外相关的帖子,并了解毯子除了子句通常是个坏主意.在子例程和模块中我总是使用除了处理特定的预期异常,但是在程序的最高级别有一个"catch-all"except子句似乎很有用,以确保我可以在程序退出之前记录异常.

你怎么看?

import traceback
try:
    # main program code here
except BaseException:
    tb = traceback.format_exc()
    msg = "Exiting program due to exception:" + tb
    LogToFile(msg)         # custom logging function
    SendAlertEmail(msg)    # warn admin that program terminated
    raise                  # program exits with the existing exception
Run Code Online (Sandbox Code Playgroud)

请注意,我使用的是BaseException而不是Exception,因为如果终端上有人按下Ctrl-C,我想将其记录为退出程序的原因(并提醒管理员该程序已退出).但我想我也可以使用:

except Exception, KeyboardInterrupt:
Run Code Online (Sandbox Code Playgroud)

python exception

5
推荐指数
1
解决办法
707
查看次数

标签 统计

exception ×1

python ×1