2017-07-06 126 views
0

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

这里是我的代码:

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子句。

谢谢。

回答

2

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

如果你打算考虑这种情况是一个例外,你必须在User.get_by_email()之内自己提出一个例外,在这种情况下,你可以在你的post()函数中捕获它。

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

相关问题