Как обрабатывать ошибки в rxjava2 в android

Привет Я использую RxJava2 с LiveData в моем приложении для Android. Я делаю http-вызов, используя ниже

 @Inject lateinit var retrofit: Retrofit override fun doServerLoginApiCall(email: String, password: String): LiveData<LoginResponse> { val liveData = MutableLiveData<LoginResponse>() retrofit.create(RestApi::class.java).login(email, password) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe { loginResponse -> liveData.setValue(loginResponse); } return liveData } 

Как я могу обрабатывать ошибку, как показано ниже в приведенном выше коде.

 when (e) { is HttpException -> { val responseBody = (e as HttpException).response().errorBody() responseBody?.let { view?.onUnknownError(getErrorMessage(it)) } } is SocketTimeoutException -> { view?.onTimeout() } is IOException -> { view?.onNetworkError() } else -> { e.message?.let { view?.onUnknownError(it) } } } 

Если вы хотите реализовать onError для своего блока подписки, вы можете сделать это следующим образом:

 retrofit.create(RestApi::class.java).login(email, password) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( // success { loginResponse -> liveData.setValue(loginResponse) }, // error { e -> handleError(e) }) ... fun handleError(e: Throwable) { when (e) { ... }