2016-09-07 22 views
0

にFirebase例外を取得する:私は現在、このコードを持ってどのようにswitch文

if (!task.isSuccessful() && task.getException() != null) { 
    FirebaseCrash.report(task.getException()); 
    Log.w(TAG, "signInWithCredential", task.getException()); 
    Toast.makeText(SignUp.this, "Authentication failed: " + task.getException().getMessage(),Toast.LENGTH_LONG).show(); 
} 

時々、ユーザーがFirebaseAuthUserCollisionExceptionを取得し、私はそうのようなswitch文でそれを検出します:

switch(task.getException()){ 
    case /*I don't know what goes here*/: 
     //Whatever 
} 

あなたが読んだところでは、私はcaseのステートメントに何を入れるべきか分からない。私はそこに何を入れますか?つまり、FirebaseAuthUserCollisionExceptionはどこにあるので、私はそれにアクセスできますか? FirebaseAuthUserCollisionExceptionは単なるクラスなので、私は現在それで何もできません。

+0

同じ問題[ここで議論]である(http://stackoverflow.com/q/37859582/4815718)。私が物事を見ると、あなたが望むことをするための単純できれいな方法はありません。ここでの回答に示されているアプローチに加えて、[この解決方法](http://stackoverflow.com/a/38490022/4815718)も検討できます。 –

答えて

1

Firebase認証の例外。

ので:

if(task.getException() instanceof FirebaseAuthException){ 
    FirebaseAuthException e = (FirebaseAuthException)task.getException(); 
    switch (e.getErrorCode()) { 
     ... 
    } 
} 
+0

ありがとう、 "FirebaseAuthUserCollisionException"を取得するにはどうすればよいですか? 'case" FirebaseAuthUserCollisionException ":'? –

+0

スイッチケースはJavaでクラスをテストできません。スイッチケースが必要な場合は、 'getErrorCode()'と比較する必要があります。クラスと比較したい場合は、@rafalのように 'if'sをネストする必要があります。 –

+0

良いですが、どのようにクラスを比較しますか?そしてそれが本当であれば、あなたの答えに 'switch(e.getErrorCode())'をなぜ含めましたか?あなたの答えをbtw、非常に便利: –

0

試してみてください。すべてはgetErrorCode()メソッドを持っているFirebaseAuthException、から派生

if(task.getException() instanceof FirebaseAuthUserCollisionException){ 
    //whatever 
} 
+1

他の例外がこの例外クラスのサブクラスである場合、その例外クラスにも該当します。 – mhenryk

関連する問題