2016-06-22 14 views
0

DatabaseErrorオブジェクトの新しいインスタンスを生成する方法はありますか?Firebaseで新しいDatabaseErrorインスタンスを作成する方法は?

編集:

私はここで私はonCancelled(DatabaseError databaseError)方法で例外とルートにエラーをキャッチしたいValueEventListenerを実装するクラスを使用しています。

public class StandardSingleValueListener<T> implements ValueEventListener { 

    protected Class<T> mTypeClass; 

    public StandardSingleValueListener(Class<T> typeClass){ 
     mTypeClass = typeClass; 
    } 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     T result = null; 
     try { 
      result = parseMethod(dataSnapshot); 
     } catch (Exception e) { 
      onCancelled(new DatabaseError(e.toString()); // I'd like to create the error here 
      return; 
     } 
     // process result 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     // process databaseError 
    } 

    protected T parseMethod(DataSnapshot snap){ 
     return snap.getValue(mTypeClass); 
    } 
} 
parseMethodが時々上書きされ

mTypeClassTのクラスです。

+0

あなたのコードは決して* DatabaseErrorを作成する必要はありません。これは[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)のように聞こえます。あなたが達成しようとしていることを説明して、ユースケースについていくつかのコンテキスト(そして理想的には[MCVE](http://stackoverflow.com/help/mcve))を与えれば、おそらく助けが簡単です。 –

+0

@FrankvanPuffelen私はユースケース – Voy

答えて

2

あなたはとDatabaseError from the exceptionを作成することができます。

DatabaseError.fromException(e); 

しかし、私は、それはここで良いアイデアだか分かりません。通知しているエラーは、アプリケーションレベルのエラーです。 DatabaseErrorとしてそれを上げることは、あなたの後にコードを維持する人たちに混乱を招くようになります。

+0

を追加しました。その場合、自分のエラータイプ、つまりParseErrorを作成することをお勧めしますか?または、独自のエラータイプでDatabaseErrorをラップしますか? – Voy

+0

私は、 'parseMethod()'によって引き起こされる例外を捕まえて、なぜ同じエラー条件に対して別の例外を発生させるのか不思議です。単にそれをそのまま通すのではないのですか? –

+0

私はonCanceled()コールバックの後にコード内のデータベース関連のエラーを処理しています。 parseMethod()はFirebaseからのデータの検索(例:ソート、フィルタリング)を改良するために使用されているので、FirebaseのDatabaseErrorと同様にエラーを処理するのが理にかなっています。私はラッピングしているとは思えませんが、あなたが提案するような別の例外を発生させます。 parseMethod()をキャッチした後、私はそれをチェックしてonCancelled()内で処理できるように、投げられないErrorオブジェクトを作成しています。 onCancelled()に渡されたFirebaseのエラーをチェックして処理するのと同じ方法です – Voy

関連する問題