首页 > 解决方案 > 如何处理 value == None 正常并且应该通过的异常?

问题描述

我得到的响应是 None 并且没问题,这不是错误。但是每次运行程序时都会出现异常。

        response = None
        try:
            if ~self.session.is_active:
                self.session.rollback()

           data = self.session.query(Data)\
                               .filter(GeocoderData.address == address)
                                .first()
           response = data.yandex['response']
           logger.info(f"response = {str(e)}")

       except (TypeError, ValueError) as e:
            self.db_session.rollback()
            self.error = messages["db_error"]
            logger.error(f"{str(e)}")

        return response

我试着做这样的:

 if response or response == None:

在尝试块中,它不起作用

我应该如何处理这种情况,得到响应 = None 是可以的,它也不例外?

标签: pythonexception

解决方案


你得到了KeyError: 'response',因为在 .response 中没有名为response的字段data.yandex。而不是通过方括号获取字典值:

data.yandes['response']

使用 getter,指定默认值

data.yandes.get('response', None)

这样,如果没有名为 'response' 的字段,它将返回None. 接下来要做的事情,如果您希望None响应正常,但其他一切都不好,请执行以下操作:

if response is not None:
    raise ValueError

这样,如果您的响应返回None,则程序正常运行,但如果它不是None,则抛出错误,并且您的except子句正在运行。


推荐阅读