Buscando una manera limpia de manejar errores en RxJava
Estoy aprendiendo RxJava y he visto en muchos lugares que un error puede manejarse de esta manera:
repository.getById(10).subscribe(new Action1<User>() {
@Override
public void call(User user) {
//Do something
}
}, new Action1<Throwable>() {
@Override
public void call(Throwable t) {
if (t instanceof FirstErrorException) {
handleFirstError((FirstErrorException) t);
} else if (t instanceof FirstErrorException) {
handleSecondError((SecondErrorException) t);
} else {
//and so on...
}
}
});
¿Soy el único que piensa que este es un código realmente malo? ¿Cómo puedo mejorarlo? Pensé usandoVisitor
patrón que "visita" cada tipo concreto de mi excepción base, peroonError
método siempre requiere unAction1<Throwable>
; no puedes usar tu propia excepción base, soloThrowable
.