Cómo manejar el `IllegalArgumentException` en RxJava?

Estoy utilizando Retrofit con RxJava para las llamadas de red y RxBinding para las operaciones de vista. En la pantalla de registro, al hacer clic en el botón "Registrar" estoy publicando la información en el servidor local mediante el servicio MyApi .

SignupActivity.class

 mCompositeSubscription.add(RxView.clicks(mRegisterButton).debounce(300, TimeUnit.MILLISECONDS). subscribe(view -> { registerUser(); }, e -> { Timber.e(e, "RxView "); onRegistrationFailed(e.getMessage()); })); private void registerUser() { mCompositeSubscription.add(api.registerUser(mEmail, mPassword, mConfirmPassword) .subscribe(user -> { Timber.d("Received user object. Id: " + user.getUserId()); }, e -> { Timber.e(e, "registerUser() "); onRegistrationFailed(e.getMessage()); })); } 

Mi clase de aula

  public Observable<User> registerUser(String username, String password, String confirmPassword) { return mService.registerUser(username, password, confirmPassword) .compose(applySchedulers()); } @SuppressWarnings("unchecked") <T> Observable.Transformer<T, T> applySchedulers() { return observable -> observable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } 

MyService.class

  @FormUrlEncoded @POST("users/") Observable<User> registerUser(@Path("email") String username, @Path("password") String password, @Path("password_confirmation") String confirmPassword); 

La llamada falla con IllegalArgumentException ya que estoy publicando una información no válida.

¿Cuál es mi problema principal es, en IllegalArgumentException pensé RxJava ejecutar registerUser()#ErrorHandler() ya que mi registerUser servicio de llamada falló con la excepción, pero en lugar de ello llama RxView#ErrorHandler() .

¿Cómo puedo hacer / force registerUser()#ErrorHandler() para cuidar de la excepción que se produjo durante la llamada de red?

Mi malo, la llamada de red no falla con IllegalArgumentException pero la construcción de solicitud en sí falló con IllegalArgumentException .

 java.lang.IllegalArgumentException: URL "users/" does not contain {email}". 

En lugar de usar la anotación @Field para construir el cuerpo del POST, usé @Path anotación @Path .

La definición correcta:

  @FormUrlEncoded @POST("users/") Observable<User> registerUser(@Field("email") String username, @Field("password") String password, @Field("password_confirmation") String confirmPassword); 
  • RxJava y datos almacenados en caché
  • RxAndroid textview eventos llamados automáticamente antes de cambios de texto eventos
  • Encadenamiento de dos llamadas de servicio web mediante RxJava y Retrofit
  • Comprobación de Internet, dónde colocar al usar MVP, RX y Retrofit
  • RXJava - Dividir y combinar un Observable
  • Manera correcta de manejar ninguna red con Retrofit y RX-java
  • Usando RxJava para encadenar una serie de operaciones - ¿a dónde ir después?
  • Cómo anular los Observables compartidos, infinitos con un retraso después de que el último suscriptor no se haya suscrito
  • Uso de Mockito con Retrofit 2.0
  • RxJava como bus de eventos en proyecto Android - eliminar evento del bus
  • Cómo crear un observable de OnClick evento Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.