Try/except在编译的Python中不捕捉错误

2024-09-28 22:21:23 发布

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

我有一些代码涉及Try和Except子句。当我在控制台中以空闲状态运行它时,它工作得很好,而且从不崩溃。但是,当我编译它时,它是失败的捕捉错误,所以程序崩溃,这是让我发疯!在

代码是:

if self.height == 6:
    try:
        libtcod.path_compute(minimap[self.mapx][self.mapy].path3,self.x+60, self.y+60,target_x+60, target_y+60)
        stepx, stepy = libtcod.path_get(minimap[self.mapx][self.mapy].path3, 0)
        dx = stepx - self.x - 60
        dy = stepy - self.y - 60
    except:
        success = False  

我正在使用libtcod库。这是stepx/stepy位,它有时失败,问题是,我知道它有时会失败,它就是抓不住它!我试过让它在stepx部分前后打印一条消息,它将打印第一部分,但不打印后一部分。有很多选项可以导致成功=False,而这只有一个,然后我处理如果成功==False会发生什么(这是一个游戏,测试一个敌人是否可以找到你,如果没有,那么它会尝试其他方法)。我不知道为什么它在未编译时可以捕获它,但在编译时却完全失败。有人能给我解释一下吗?在

提前谢谢!在


Tags: path代码selffalsetargettryexcept子句
1条回答
网友
1楼 · 发布于 2024-09-28 22:21:23

尝试检查传递给使程序崩溃的libtcod函数的所有参数(在本例中是libtcod.path_get)。当您传入不正确的参数而不是发出一条很好的错误消息时,Libtcod常常会出现错误,我在fieldofview工具箱中遇到了同样的问题。在

如果这些值在使用py2exe“编译”的版本中由于某种原因而不同,那么这就可以解释为什么它只在某些时候崩溃。在

这部分看起来有问题:

minimap[self.mapx][self.mapy]

如果有这样的嵌套数组:

^{pr2}$

然后要引用位置(x,y)的项,必须使用minimap[y][x]

编辑:

libtcod.path_get的第一个参数应该是用于路径查找的映射,由path_new_using_map或{}返回。您不需要为地图中的每个方块单独绘制地图。我认为您应该更仔细地阅读文档: http://doryen.eptalys.net/data/libtcod/doc/1.5.0/index.html

相关问题 更多 >