2016-06-22 2 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()를 잡은 후에는 throw 가능하지 않은 Error 객체를 생성하여이를 확인할 수 있고 onCancelled() 내에서 처리 할 수 ​​있습니다. OnCancelled()에 전달 된 Firebase의 오류를 확인하고 처리하는 것과 같은 방식으로 – Voy

관련 문제