我正在尝试在Schedulers IO线程中执行一些IO操作,如果抛出异常,我想向用户显示一些Toast。
为此,我使用以下代码:
Observable.interval(0, 15, TimeUnit.SECONDS)
.observeOn(Schedulers.io())
.doOnNext(event -> new Repository().inputOutput(MainActivity.this);)
.observeOn(AndroidSchedulers.mainThread())
.doOnError(throwable ->
Toast.makeText(MainActivity.this, "Error message", Toast.LENGTH_SHORT).show())
.subscribe();
当方法" inputOutput"抛出异常时,我希望Throwable可以被捕获到" doOnError"消费者,但它没有发生,并且异常被抛到周围的代码中。
我做错了什么? 非常感谢你!
答案 0 :(得分:1)
应该是这样的:
Observable.interval(0, 15, TimeUnit.SECONDS)
.flatMap(event -> new Repository().inputOutput(MainActivity.this);)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({your onNext/onComplete handler}, throwable ->
Toast.makeText(MainActivity.this, "Error message", Toast.LENGTH_SHORT).show()));