 <p>"Errors" in Rx can be a a little difficult to grasp at first, because they have a slightly different meaning from what most people expect.</p> <p>From the <a href="https://github.com/ReactiveX/RxJava/wiki/Error-Handling" rel="nofollow">Error Handling documentation</a> (emphasis mine):</p> <blockquote> <p>An Observable typically does not throw exceptions. Instead it notifies any observers that <strong>an unrecoverable error has occurred</strong> by terminating the Observable sequence with an onError notification.</p> </blockquote> <p><code>onError()</code> is supposed to be used when an <code>Observable</code> encounters an <em>unrecoverable</em> error- that is when your <code>Observable</code> cannot continue emitting items. When you are subscribing, you might use something like <code>onErrorResumeNext</code> to try some recovery action, but that should be the end of the source <code>Observable</code>.</p> <p>Instead, you may want to adjust what your <code>Observable</code> emits to support emitting an error item, or include a flag indicating that an error was encountered.</p> <p>If your error truly is unrecoverable, then you may want to revisit your recovery strategy and try a slightly different approach.</p>