我正在使用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();
}
}
});
答案 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();
}
}
}
});