为了账号安全,请及时绑定邮箱和手机立即绑定

在 if 条件中使用异常

在 if 条件中使用异常

MM们 2023-08-09 16:09:17
我使用它是Firebase Auth为了管理我的登录并注册该应用程序。我想根据收到的异常添加 toast 消息。例如,如果例外是FirebaseAuthInvalidCredentialsException我想祝酒一条消息。如果是从那时FirebaseAuthUserCollisionException起我想再用一片吐司。我用类似的东西:auth.createUserWithEmailAndPassword(email, password)        .addOnCompleteListener(SignUpActivity.this, new OnCompleteListener<AuthResult>() {            @Override            public void onComplete(@NonNull Task<AuthResult> task) {                if (task.isSuccessful()) {                    LayoutInflater inflater = LayoutInflater.from( SignUpActivity.this );                    View toastview = inflater.inflate( R.layout.toast_registered, null );                    Toast toast = new Toast( SignUpActivity.this );                    toast.setView( toastview );                    toast.setGravity( Gravity.CENTER, 0, 3 );                    toast.setDuration( Toast.LENGTH_LONG );                    toast.show();                }                if (!task.isSuccessful()) {                    Toast.makeText(SignUpActivity.this, "toast1." + task.getException(),                            Toast.LENGTH_SHORT).show();                }                if (!task.isSuccessful()) {                    Toast.makeText(SignUpActivity.this, "toast2." + task.getException(),                            Toast.LENGTH_SHORT).show();                } else {                    startActivity(new Intent(SignUpActivity.this, MainActivity.class));                    finish();                }            }        });所以基本上我需要在 if 条件中添加一些东西,但我不确定什么。我看到了使用catch但我不认为是这种情况。
查看完整描述

2 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

这应该可以做到:


auth.createUserWithEmailAndPassword(email, password)

        .addOnCompleteListener(SignUpActivity.this, new OnCompleteListener<AuthResult>() {

            @Override

            public void onComplete(@NonNull Task<AuthResult> task) {

                if (task.isSuccessful()) {

                    LayoutInflater inflater = LayoutInflater.from( SignUpActivity.this );

                    View toastview = inflater.inflate( R.layout.toast_registered, null );

                    Toast toast = new Toast( SignUpActivity.this );

                    toast.setView( toastview );

                    toast.setGravity( Gravity.CENTER, 0, 3 );

                    toast.setDuration( Toast.LENGTH_LONG );

                    toast.show();

                }

                else {

                    if (task.getException() instanceof FirebaseAuthInvalidCredentialsException) {

                         Toast.makeText(SignUpActivity.this, "toast1." + task.getException(),

                         Toast.LENGTH_SHORT).show();

                    }

                    else if (task.getException() instanceof FirebaseAuthUserCollisionException) {

                         Toast.makeText(SignUpActivity.this, "toast2." + task.getException(),

                            Toast.LENGTH_SHORT).show();

                    }   

                    startActivity(new Intent(SignUpActivity.this, MainActivity.class));

                    finish();

                }

            }

        });

因此,您检查任务是否成功,如果没有成功,则在开始注册活动和完成此活动之前打开错误类型并显示相应的 toast。


查看完整回答
反对 回复 2023-08-09
?
当年话下

TA贡献1890条经验 获得超9个赞

首先,您只需要一个条件,例如task.isSuccessful()。


你可以这样做:


if(task.isSuccessful()) {

    try {

        throw task.getException();

    } catch(FirebaseAuthInvalidCredentialsException e) {

        /*Toast here*/

    } catch(FirebaseAuthUserCollisionException e) {

        /*Toast here*/

    } catch(...) ...

}


...

throw task.getException();

...

你将抛出特定的异常并使用


} catch(FirebaseAuthInvalidCredentialsException e) {

    /*Toast here*/

}

您将捕获特定的异常来处理该异常并执行您想要的操作,在您的情况下,您将编写代码以在 catch 语句中显示 toast。


请记住捕获所有异常,否则当引发未处理的异常时,您的应用程序将崩溃。


您还可以处理通用异常:


if(task.isSuccessful()) {

    try {

        throw task.getException();

    } catch(FirebaseAuthInvalidCredentialsException e) {

        /*Toast here*/

    } catch(FirebaseAuthUserCollisionException e) {

        /*Toast here*/

    } catch(Exception e) {

        /*Handle generic exception*/

    }

}

再见


查看完整回答
反对 回复 2023-08-09
  • 2 回答
  • 0 关注
  • 118 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信