Cześć.
@Koziołek, @Shalom, @panryz
sorry że Was tak z imienia ale może będzie szybciej :P.
Mam następującą zagwozdkę. Otóż w Rx owej konstrukcji strumienia po iluś tam mapach, filtrach i diaboł wie czego jeszcze, dochodzimy do naszej subsrkrybcji i tam widnieje nam piękne onError.
no i elegancko się z nim rozprawiamy.
Tylko moment. A skąd wiemy jaki to error? A no właśnie nie wiemy.
No to co zrobić żeby sprawdzić czy to jakiś nullPointer, HttpError czy jeszcze jakieś inne cholerstwo co się nam po drodze napatoczyło?
No niestety jedyne przykłady znalezione w necie oferują instanceOf jako rozwiązanie, co jest po pierwsze brzydkie a po drugie jest bardzo brzydkie.
dlatego może jakiś fajny pomysł jak to sensownie zrobić? Mi jedyne co przyszło do głowy to zrobienie takiego koszmarka
public interface ErrorHandler {
void handleError(Exception e);
void handleError(HttpException e);
void handleError(NullPointerException npe);
//i tu dokladanie nastepnych w zaleznosci ile chcemy obsłużyć. Ale to strasznie bleh jest też
}
i wrzucenie go wesoło do łańcucha i niech ten interfejs się martwi jaki error obsługuje
i zamiast tego
model.provideObservable()
.subscribe(loginResponse -> {
view.onLoginResponse();
},throwable -> {
if (throwable instanceof HttpException) {
// tutaj zrob cos jak http exception
} else {
// tutaj zrob cos jak nie http exception
}
});
mieć coś takiego:
model.provideObservable()
.subscribe(loginResponse -> {
view.onLoginResponse();
},throwable -> {
errorHandler.handleError(throwable);
});