【问题标题】:Handling Google App Engine datastore NoneType errors处理 Google App Engine 数据存储区 NoneType 错误
【发布时间】:2017-07-06 18:25:10
【问题描述】:

我希望处理来自 Google App Engine ndb 数据存储区的 NoneType 错误。

这是我的代码:

def post(self):
    # get the email and password from the login form
    global u_qry
    email = self.request.get("email")
    password = self.request.get("password")

    try:
        u_qry = user_db.User.get_by_email(email)
    except BaseException, e:
        self.response.out.write(e, u_qry)
    else:
        self.response.out.write("User Recognised")
        self.response.out.write(u_qry)

当用户不存在时,except 子句不会捕获任何错误。

Output:
User Recognised None

为什么 except 子句没有捕捉到这个错误?可以用什么异常来捕捉这个错误?

我意识到我可以使用 if/else 语句,但想了解如何在 GAE 中使用 try/except 子句。

谢谢。

【问题讨论】:

    标签: python google-app-engine app-engine-ndb


    【解决方案1】:

    虽然您没有展示 User.get_by_email() 函数的实现方式,但我怀疑它只是基于查询。从查询返回空结果是一种完全有效的情况 - 没有现有的数据存储实体与查询匹配。也不例外。

    如果您打算将这种情况视为异常,您必须自己在 User.get_by_email() 中提出一个异常,在这种情况下,您可以在 post() 函数中捕获它。

    您也可以直接检查u_qryNone 值。

    【讨论】:

      猜你喜欢
      • 2021-02-20
      • 2011-02-16
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-08
      • 1970-01-01
      相关资源
      最近更新 更多