try/catch 和在signInWithEmailAndPassword 上设置OnSuccess/OnFailure 侦听器的语法?

问题描述 投票:0回答:1

我正在编写一些 Kotlin 类来使用 Firebase 电子邮件/密码登录来登录应用程序。目前的功能是:

fun loginWithFirebase(email : String, password : String)
    {
        setInProgress(true)
        FirebaseAuth.getInstance().signInWithEmailAndPassword(email, password)
        .addOnSuccessListener {
            UiUtil.showToast(this, "Logged in successfully")
            setInProgress(false)
            startActivity(Intent(this, MainActivity::class.java))
            finish()
        }
        .addOnFailureListener{
            UiUtil.showToast(applicationContext, it.localizedMessage?: "Login failed, something went wrong")
            setInProgress(false)
        }
    }

我想添加一个try/catch来捕获signInWithEmailAndPassword中的异常,例如在这个问题中,但是这个语法很棘手,我很难弄清楚在哪里放置try/catch块,这样它就不会中断成功和失败的听众。

我知道告诉用户他们只是用户名错误或密码错误是一个坏主意,而且我并没有尝试禁用 Firebase 反用户枚举措施。我想保留这些。

谢谢!

android firebase kotlin firebase-authentication
1个回答
0
投票

我想添加一个try/catch来捕获signInWithEmailAndPassword的异常,例如在这个问题

使用监听器时不需要添加try/catch。如果使用电子邮件和密码登录的操作失败,则会触发 onFailure(Exception e) 方法。此方法有一个类型为 Exception 的参数。然后您可以调用 getMessage() 查看实际的错误消息。

除此之外,链接问题中的代码是JavaScript,它具有不同的语法。但在 Kotlin 代码中,不需要这样做,除非您使用 Kotlin 协程并且等待结果。请检查几天前提供的答案:

© www.soinside.com 2019 - 2024. All rights reserved.