【发布时间】:2014-08-31 11:49:59
【问题描述】:
我正在使用Python 3
我一直在寻找这个问题的答案,但还没有找到。基本上,我在游戏引擎中运行了几个 Python 脚本,每个脚本都有自己的入口点。
我不想在我的所有代码中添加try: except blocks,所以我想知道是否有可能告诉 Python 在找到第一个错误时退出(或者可能为该“回调”分配一个自定义函数) ,不管它在哪里或发现了什么?
目前,游戏引擎会在发现并遇到错误后继续运行,这使得诊断问题变得比必要的困难,因为遇到一个错误可能会使后续脚本无法工作(因为它依赖于错误脚本的变量设置,例如)。有任何想法吗?
我知道我可以将控制台重定向到一个文件以便更轻松地滚动,但仅捕获第一个错误并提前停止游戏将非常有用。
好的,还有一些额外的信息 - 很抱歉没有说出来。我使用的引擎(Blender 游戏引擎)是用 C 编码的,所以更改源代码比我想做的要多。
在谷歌搜索之后,似乎有人问了here 一个类似的问题并给出了可靠的答案,这是如何获取最后一个引发的异常。如果我检查 sys 模块是否存在 last_value 变量并且它存在,那么我可以提前退出,因为控制台已经打印出错误。
感谢您的帮助。
【问题讨论】:
-
如果它在出错后继续,它已经遇到了 try/catch 块...
-
如果后续脚本失败,说明它们耦合得太紧了。首先在它们之间的接口点上添加验证。
-
如果您在查看问题所在时遇到问题,那么设置 logging 会很有用
-
@Basic - 我没有添加,所以我想这是可能的。
-
@jonrsharpe - 如果没有必要,我宁愿不编辑引擎的 C 源代码。
标签: python