2017-07-06 84 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的值。

相關問題