首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pepper完全忽略IF ELSE

Pepper完全忽略IF ELSE
EN

Stack Overflow用户
提问于 2018-09-12 23:02:37
回答 1查看 53关注 0票数 0

我正在使用以下脚本分析python中的AWS响应:

代码语言:javascript
复制
#var definition
conversationName = 'NO NAME'

#in the MyClass
    if len(resp['FaceMatches'])>0:
        faceRecognized = resp['FaceMatches'][0]['Face']['ExternalImageId']
        self.logger.info(str(faceRecognized))

        if resp['FaceMatches'][0]['Face']['ExternalImageId'] == self.conversationName:
            self.logger.info("Name is the same")
            return
        else:
            self.logger.info('Name has changed!')
            self.conversationName=faceRecognized.split('_')[0]
            self.pepperTTS.say("Hi "+str(faceRecognized.split('_')[0])+". Can I help you with something?")
            return
    else:
        self.logger.info("No face rekognized so far.")
        return

问题出在第二个IF ELSE。当我运行程序时,它似乎完全忽略了这一点,而且既不会打印“名称是相同的”,也不会打印“名称已更改”。并且在运行脚本时不会显示任何错误。

有没有人看到这个错误,或者能给出一些提示来改正这个脚本?

EN

回答 1

Stack Overflow用户

发布于 2018-09-13 00:14:51

最可能发生的情况是,resp['FaceMatches'][0]['Face']['ExternalImageId']因为这些键/索引中的一个错误而引发异常,然后异常不会被捕获并被默默地吞噬-这是不幸的,但在NAOqi中,如果没有人捕获许多异常(例如,在ALMemory订阅的回调中-就像您在这里可能遇到的那样)。

因此,您应该将所有块包装在一个较大的try/except中,并打印捕获到的任何异常。

这是一种非常常见的情况,我创建了一个带有log_exceptions装饰器的助手库(documented here),您可以将其放在任何允许异常的函数上(通常是: ALMemory事件和信号回调;任何使用qi.async调用的函数,任何从您的服务外部调用的函数...),这样您的代码就不会到处乱七八糟地使用try/ the。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52298256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档