Как правильно обрабатывать метод subcribe ()? - PullRequest
0 голосов
/ 27 апреля 2020

У меня были проблемы с методом subscribe() в моем коде (сообщение отладочной консоли ниже)

io.reactivex.exceptions.OnErrorNotImplementedException: The exception was not handled due to missing onError handler in the subscribe() method call. Further reading: https://github.com/ReactiveX/RxJava/wiki/Error-Handling | Expected a string but was BEGIN_OBJECT at line 1 column 2 path $

, и я не могу понять, как это сделать правильно, есть моя часть код, с которого начинается

private fun startSearch(query: String) {
        disposables.addAll(IMyService.searchCourse(query)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe ({ courses ->
                adapter = CourseAdapter(baseContext, courses)
                recycler_search.adapter = adapter
            }, {
                Toast.makeText(this, "Not found", Toast.LENGTH_LONG).show()
            }))
    }

    private fun getAllCourses() {
        disposables.addAll(IMyService.coursesList
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe ({ courses ->
                adapter = CourseAdapter(baseContext, courses)
                recycler_search.adapter = adapter
            }, {
                Toast.makeText(this, "Not found", Toast.LENGTH_LONG).show()
            }))
    }

и имеется полный код

параметры

1 Ответ

0 голосов
/ 27 апреля 2020

В реактивном программировании передача подписчика в Observable должна повлечь за собой три случая:

  1. onSuccess
  2. onError
  3. onFailure

Если, однако, вы просто хотите передать подписчику, который, как вы знаете, наверняка не будет иметь никаких ошибок или сбоев и уверен, что он всегда будет успешным, то просто попробуйте onSuccess или onFailure, как упомянуто @EpicPandaForce. Однако хорошая практика - всегда реализовывать три случая, о которых вы никогда не знали.

...