如何覆盖createUserWithEmailAndPassword方法的异常?

时间:2016-09-30 21:03:37

标签: android firebase firebase-realtime-database firebase-authentication

我正在使用Firebase,我正在使用一种方法为用户创建一个名为“createUserWithEmailAndPassword”的帐户。

我在Firebase references中发现,此方法例外之一是“FirebaseAuthWeakPasswordException”,当密码少于6个字符时会调用。

我想抓住这个异常并向用户显示一条带有我自己的话的消息, 但是当我用try& catch包装方法时,我得到了这个错误:“异常'com.google.firebase.auth.FirebaseAuthWeakPasswordException'永远不会在相应的try块中抛出”。 我试着解决这个问题一段时间,但没有运气。 这是代码的片段,希望你能帮助我解决这个问题:

mAuth.createUserWithEmailAndPassword(email, pass)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {

                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    //   Log.d(TAG, "createUserWithEmail:onComplete:" + task.isSuccessful());

                    // If sign in fails, display a message to the user. If sign in succeeds
                    // the auth state listener will be notified and logic to handle the
                    // signed in user can be handled in the listener.

                    if(task.isSuccessful())
                    {
                        Toast.makeText(getApplicationContext(),"Account has created!",Toast.LENGTH_SHORT).show();
                    }
                    if (!task.isSuccessful()) {
                        Toast.makeText(getApplicationContext(), "failed!",
                                Toast.LENGTH_SHORT).show();
                    }
                }

            });

2 个答案:

答案 0 :(得分:1)

您尚未添加任何FailureListener,这就是您无法获得正确错误代码或异常的原因。

将其添加到 mAuth ,就像这样

mAuth.createUserWithEmailAndPassword(email, pass)
      .addOnFailureListener(this, new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        if (e instanceof FirebaseAuthException) {
                            ((FirebaseAuthException) e).getErrorCode());
                           //your other logic goes here
                      }
                    }
                })

如果有任何改变,请告诉我。

答案 1 :(得分:1)

您需要致电task.getException(),然后使用instanceof

mAuth.createUserWithEmailAndPassword("qbix@gmail.com", "only5")
    .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            Log.i(TAG, "createUserWithEmail:onComplete:" + task.isSuccessful());

            if (!task.isSuccessful()) {
                Log.w(TAG, "onComplete: Failed=" + task.getException().getMessage());
                if (task.getException() instanceof FirebaseAuthWeakPasswordException) {
                    Toast.makeText(MainActivity.this, "Weak Password", Toast.LENGTH_SHORT).show();
                }
            }
        }
    });