如何在 Firebase 中创建一个新的 DatabaseError 实例?
How to create a new DatabaseError instance in Firebase?
有没有办法生成 DatabaseError 对象的新实例?
编辑:
我正在使用 class 实现 ValueEventListener,我想在其中捕获异常并通过 onCancelled(DatabaseError databaseError)
方法传递错误。
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
有时会被覆盖,而 mTypeClass
是 T
的 class。
您可以通过以下方式创建 DatabaseError
from the exception:
DatabaseError.fromException(e);
但我不确定这是个好主意。您发出的错误信号是应用程序级错误。将其提升为 DatabaseError
势必会导致那些在您之后维护代码的人感到困惑。
有没有办法生成 DatabaseError 对象的新实例?
编辑:
我正在使用 class 实现 ValueEventListener,我想在其中捕获异常并通过 onCancelled(DatabaseError databaseError)
方法传递错误。
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
有时会被覆盖,而 mTypeClass
是 T
的 class。
您可以通过以下方式创建 DatabaseError
from the exception:
DatabaseError.fromException(e);
但我不确定这是个好主意。您发出的错误信号是应用程序级错误。将其提升为 DatabaseError
势必会导致那些在您之后维护代码的人感到困惑。