处理Google App Engine数据存储无类型错误

时间:2017-07-06 18:25:11

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

我希望处理来自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子句。

感谢。

1 个答案:

答案 0 :(得分:2)

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

如果您打算将此类案例视为例外,您必须在User.get_by_email()内自行提出一个例子,在这种情况下,您可以在post()函数中捕获它。

或者,您可以直接检查u_qry None值。