Python 如何传递非类型错误
我目前的文本冒险代码有问题,程序运行得很好,但每当角色死亡时,程序就会调用此错误:Python 如何传递非类型错误,python,python-3.x,Python,Python 3.x,我目前的文本冒险代码有问题,程序运行得很好,但每当角色死亡时,程序就会调用此错误: NextSceneName = CurrentScene.enter() AttributeError: 'NoneType' object has no attribute 'enter' 该计划将在此之后崩溃,这本身并没有什么大不了的 该部分程序的代码为: def play(self): CurrentScene = self.sceneMap.OpeningScene()
NextSceneName = CurrentScene.enter()
AttributeError: 'NoneType' object has no attribute 'enter'
该计划将在此之后崩溃,这本身并没有什么大不了的
该部分程序的代码为:
def play(self):
CurrentScene = self.sceneMap.OpeningScene()
LastScene = self.sceneMap.NextScene('Finished')
while CurrentScene != LastScene:
NextSceneName = CurrentScene.enter()
CurrentScene = self.sceneMap.NextScene(NextSceneName)
CurrentScene.enter()
我想知道的是,如何使用If语句或Try-Except语句来传递NoneType/AttributeError?首先,
CurrentScene
必须计算为None
,这就是为什么会出现错误。明智的做法是找出为什么会发生这种情况,如果这不是预期的
但是,如果要捕获该异常,请将最后一行CurrentScene.enter()
替换为:
try:
CurrentScene.enter()
except AttributeError:
dosomething()
或者,如果您想在尝试“进入”之前捕获所有这些信息,您可以执行以下操作:
if CurrentScene == None:
dosomething()
如果这不起作用,可能是因为您也在while循环中调用了
CurrentScene.enter()
,所以改为在那里执行该操作如果他没有任何针对CurrentScene的方法enter(),该怎么办?我已尝试将CurrentScene.enter()放置在while循环之外。这只会导致一个新的错误,一个NameError,声明:“name'currentsecene'未定义”我将在if语句中有一个裂缝,从您的代码中可以看出,如果您使用if..else
block,则它将始终转到else
,如果您使用try..except
block,则流控制将始终转到except block,因为您正在尝试访问方法enter()
类对象CurrentScene
可能不可用,您应该指定它是什么,或者您是否在任何测试用例上实际获得了输出?如果你在获取输出时遇到问题,那么也发布你的期望输出。目前我有我需要的期望输出,因为文本冒险正在运行,我所要做的就是完全传递错误,以便在死亡场景发生时不会显示!然后在try块中使用您的语句,并在除有可能出错的语句之外的块中使用失败时的操作。