Как обрабатывать ошибки в RxKotlin + Graphql

Я осознаю:

io.reactivex.exceptions.OnErrorNotImplementedException: исключение не было обработано из-за отсутствия обработчика onError в вызове метода subscribe ()

Я пытался добавить

.doOnError { error ->
            Log.i("reverser code error",error.localizedMessage)
       }.onErrorReturn { err ->
          "Return method"
     }

Но это не работает.


person Sandip    schedule 17.02.2020    source источник


Ответы (1)


doOnError и другие операторы побочных эффектов не влияют на ваш поток сами по себе. Вместо этого они вызываются, когда происходят определенные события, чтобы вы могли реагировать на эти события, другими словами, они просто ожидают значений, испускаемых для побочных операций, таких как, например, ведение журнала.

Вы можете передать другую лямбду, чтобы подписаться на обработку ошибок для определенного потока, например:

.subscribe( { /*on subscribe method here*/}, { throwable -> /*handle error*/ } )

Взгляните на это руководство -> https://www.grokkingandroid.com/rxjavas-side-effect-methods/

person Oscar Emilio Perez Martinez    schedule 17.02.2020
comment
когда я помещаю {throwable - ›/ * handle error * /} в подписку, он не возвращается при возврате данных. - person Sandip; 17.02.2020
comment
Это потому, что вторая лямбда будет вызываться только при возникновении ошибки :) - person Oscar Emilio Perez Martinez; 17.02.2020
comment
я использую этот код. fun ‹T› Observable ‹T› .observe (block: (T) - ›Unit) = this .observeOn (AndroidSchedulers.mainThread ()) .subscribe ({block}, {throw IOException ()}). apply {complexDisposable. add (this)} код блока не выполняется при возврате данных - person Sandip; 19.02.2020