Перец игнорирует, ЕСЛИ ЕЩЕ - PullRequest
       7

Перец игнорирует, ЕСЛИ ЕЩЕ

0 голосов
/ 12 сентября 2018

Я анализирую ответ AWS в python в следующем скрипте:

#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. Когда я запускаю программу, она, кажется, полностью игнорирует IF IFSE и не печатает ни «Имя совпадает», ни «Имя изменилось». И это не показывает никаких ошибок при запуске скрипта.

Кто-нибудь видит ошибку или может дать несколько советов по исправлению скрипта?

1 Ответ

0 голосов
/ 12 сентября 2018

Вероятнее всего, что resp['FaceMatches'][0]['Face']['ExternalImageId'] вызывает исключение, потому что один из этих ключей / индексов неверен, и затем исключение не перехватывается и молча проглатывается - это прискорбно, но в NAOqi многие исключения получают проглотил, если никто не ловит их (например, в обратном вызове в подписке ALMemory - как вы, вероятно, здесь).

Таким образом, вы должны обернуть весь этот кусок в большую попытку / за исключением и распечатать любое пойманное исключение.

Это достаточно распространенная ситуация, когда я создал вспомогательную библиотеку (, задокументированную здесь ) с декораторами log_exceptions, которые можно включить в любую функцию, которая поглощает исключения (как правило: событие ALMemory и обратные вызовы сигнала; все, что вызывается с помощью qi.async, все, что вызывается из-за пределов вашей службы ...), поэтому ваш код не загромождается с помощью try /, кроме как повсеместно.

...