我希望处理来自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子句。
感谢。
答案 0 :(得分:2)
虽然您没有显示User.get_by_email()
函数的实现方式,但我怀疑它只是基于查询。从查询返回空结果是完全有效的情况 - 现有数据存储实体与查询不匹配。这不是一个例外。
如果您打算将此类案例视为例外,您必须在User.get_by_email()
内自行提出一个例子,在这种情况下,您可以在post()
函数中捕获它。
或者,您可以直接检查u_qry
None
值。