gpt4 book ai didi

Python 异常 - 捕获除预期之外的所有异常

转载 作者:行者123 更新时间:2023-12-05 05:13:31 24 4
gpt4 key购买 nike

我正在使用 Python 编写一个简单的自动化脚本,它可能会在多个位置引发异常。在他们每个人中,我都想记录一条特定的消息并退出程序。为此,我在捕获异常并处理它(执行特定的日志记录操作等)后引发 SystemExit。

在 main 的顶层调用中,我执行以下操作:

if __name__ == "__main__":
try:
main()
except SystemExit: # handled exception
sys.exit(1)
except: # any unhandled exception
logging.error('Unexpected error: ', exc_info=True)
sys.exit(2)

然而,使用裸 except 是不受欢迎的。是否使用“异常树”,其中我使用 bare except 以非标准方式指定“除了我处理的异常之外的任何东西”?有没有更好的方法来实现这一目标?我仍然想记录这些未处理的异常,即使它们没有被处理。

编辑:引发 SystemExit 以注意已处理异常 - 无论我的情况是什么异常,我总是想停止运行脚本,因为任何失败都应该导致绝对失败。

我问这个的主要原因是 PEP8 似乎考虑使用 bare except 作为错误,即使我可以使用 except BaseException,它应该只是语法差异。一种方式比另一种方式更标准,还是有另一种标准途径来实现这一点?

最佳答案

裸异常会捕获您不想捕获的内容,例如 GeneratorExit。这样做:

except Exception as details:
logging.error('Unexpected error: {0}'.format(details))

关于Python 异常 - 捕获除预期之外的所有异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53591475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com