如何处理值==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:

在try块中,bit不起作用

我应该如何处理get response=None的情况,也不例外?

您得到的是KeyError: '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子句。

最新更新