处理 Google App Engine 数据存储区 NoneType 错误
Handling Google App Engine datastore NoneType errors
我希望处理来自 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 子句。
谢谢。
虽然您没有展示 User.get_by_email()
函数的实现方式,但我怀疑它只是基于查询。从查询返回空结果是一种完全有效的情况——没有现有的数据存储实体与查询匹配。这也不例外。
如果您打算将这种情况视为异常,您必须在 User.get_by_email()
中自己提出一个异常,在这种情况下,您可以在 post()
函数中捕获它。
或者您可以直接检查 u_qry
以获得 None
值。
我希望处理来自 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 子句。
谢谢。
虽然您没有展示 User.get_by_email()
函数的实现方式,但我怀疑它只是基于查询。从查询返回空结果是一种完全有效的情况——没有现有的数据存储实体与查询匹配。这也不例外。
如果您打算将这种情况视为异常,您必须在 User.get_by_email()
中自己提出一个异常,在这种情况下,您可以在 post()
函数中捕获它。
或者您可以直接检查 u_qry
以获得 None
值。