我Firebase PhoneAuth在我的應用程式中使用,并在驗證成功完成后呼叫以下函式。在我進行一些試驗時,我從名為 的集合中洗掉了使用電話號碼進行身份驗證的用戶的整個檔案"users"。然后當我嘗試打開應用程式時,應用程式崩潰并java.lang.NullPointerException出錯。但是,它不會Log.d("Tag", e.message!!)在.addOnFailureListener. 我怎樣才能捕捉到這種型別的錯誤?不.addOnFailureListener應該認為這是一個錯誤嗎?
fun getUserDetail(fragment: HomeFragment) {
mFireStore.collection(Constants.USERS)
.document(getCurrentUserID())
.get()
.addOnSuccessListener { document ->
val user = document.toObject(User::class.java)!!
fragment.successUserDetail(user)
}
.addOnFailureListener { e ->
Log.d("Tag", e.message!!)
fragment.hideProgressDialog()
}
}
uj5u.com熱心網友回復:
您最有可能在以下代碼行中得到 NullPointerException:
val user = document.toObject(User::class.java)!!
這是有道理的,因為你說你已經從集合中洗掉了用戶。
.addOnFailureListener 不應該認為這是一個錯誤嗎?
不,NPE 不是失敗,它只是表明您在不存在的檔案上呼叫了一個方法,換句話說,該方法為空。但是,例如 Firebase 服務器由于安全規則不當而拒絕您的請求時,可能會發生故障。我還寫了一篇關于這個的文章,名為:
- 如何修復 Firestore 錯誤:PERMISSION_DENIED:權限缺失或不足
如果您想避免使用 Kotlin 風格的 NPE,則不應使用!!運算子,而是:
document?.let {
val user = it.toObject(User::class.java)
fragment.successUserDetail(user)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/345179.html
標籤:安卓 火力基地 科特林 谷歌云平台 谷歌云firestore
上一篇:檢查sortedMap中的重復值
