2015-02-20 4 views
4

У меня есть общее решение для обработки ошибок в моем приложении, которое должно вызываться всякий раз, когда вызывается onError. Вместо реализации onError для каждого subscribe я сделал это внутри Application класса:Глобальное errorHandling решение с RxJava только когда onError не реализовано

RxJavaPlugins.getInstance().registerErrorHandler(new RxJavaErrorHandler() { 
    @Override 
    public void handleError(final Throwable throwable) { 
     new ErrorHandler().call(throwable); 
    } 
}); 

Однако я хотел бы иметь возможность переопределять это путем реализации onError, и в соответствии с:

https://github.com/ReactiveX/RxJava/wiki/Plugins#rxjavaerrorhandler

Этот плагин позволяет вам зарегистрировать функцию, которая будет обрабатывать ошибки, возникающие из-за RxJava, но которые не могут обрабатываться обычным RxJava onEr (например, если RxJava пытается распространять ошибку для подписчика, который не реализовал обработчик onError).

Это должен был быть случай, когда я применил onError. Однако при запуске кода handleError внутри RxJavaErrorHandler по-прежнему вызывается первым, хотя я реализовал onError.

Update: Согласно zsxwing, вики были обновлены с правильным описанием RxJavaErrorHandler.

+2

Я думаю, что это неточность в вики ... обработчик 'onError' вызывается или нет, есть' onError', связанный с 'Observer', а не только если его нет ... если никто этого не подтвердит Итак, вы можете попробовать открыть дискуссию по проблемам Github RxJava. –

+0

Есть ли другой способ выполнить то, что я хочу? – maclir

+0

Я думаю, вы используете использование 'throwable instanceof OnErrorNotImplementedException', чтобы проверить, отсутствует ли реализация onError. – zsxwing

ответ

0

Что мы делали на работе, это сделать подкласс наблюдателя, который имеет реализацию по умолчанию onError по умолчанию, которую вы все равно можете переопределить, если потребуется. Кажется, чтобы решить ваш случай использования.