codeKiller
codeKiller

Reputation: 5739

PublishSubject onError function in Kotlin

So, I am getting an error in my Android app (Kotlin) when trying to subscribe to a PublishSubject.

The error explanation is pretty straight forward, however, I have failed trying to implement this, onError function and I am not sure how to do it in a god way.

Here the error

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 | com.androidnetworking.error.ANError

Here the PublishSubject:

var positionSubject = PublishSubject.create<Location>()

Here when I subscribe (which gives error inside the code of the subscription):

compositeDisposable.add(
                    positionSubject.subscribe {
                    // do some actions here that causes Exception
                    }
 )

Here my attempt to fix it in a "nice" way (did not work, still crashes in subscribe):

compositeDisposable.add(
                        positionSubject
                            .onErrorReturn { t -> 
                                 Log.d("debug", "EXCEPTION OCCURRED")
                                 Location("")}
                            .subscribe {
                        // do some actions here that causes Exception
                        }
     )

Here what I ended up doing to fix it and not crashing:

compositeDisposable.add(
                        positionSubject.subscribe {
                             try{
                                  // do some actions here that causes Exception
                             }catch(e:Exception){
                              Log.d("debug", "EXCEPTION OCCURRED $e")
                             }
                        
                        }
     )

I am wondering how to this in a cleaner way than using the try/catch block inside the subscribe, if it is even possible.

Upvotes: 0

Views: 605

Answers (1)

shafayat hossain
shafayat hossain

Reputation: 1129

Following code is kotlin way to subscribe a PublishSubject

var positionSubject = PublishSubject.create<Location>()
positionSubject.subscribe({ location ->
    
}, { error ->
    
})

This should work fine.

Upvotes: 1

Related Questions