2017-10-13 12 views
0

Retrofit2とRxJava2を使用してバックエンドサーバーに要求しています。レスポンスが200または201の場合、すべて正常に動作します。サーバーの応答が409または503で、HttpExceptionがスローされた場合、ObservableのonError()によってキャッチされず、アプリケーションがクラッシュします。onError()によってHttpExceptionがキャッチされない

私が作っていますリクエストはこのようなものです:

@POST("users/sign-up") 
fun register(@Body register: RegisterBody): Observable<User> 

私は要求がこれ(applySchedulers()のみsubscribeOn()observeOn()を適用)であることを確認コードスニペット:例外がスローさ

api.register(body) 
    .compose(applySchedulers()) 
    .subscribe(
     { user -> onNextRegister(user.id, email.toString(), password.toString()) }, 
     { error -> handleRegistrationError(error) }) 

次のとおりです。

io.reactivex.exceptions.CompositeException: 2 exceptions occurred. 
ComposedException 1 : retrofit2.adapter.rxjava2.HttpException: HTTP 503 Unavailable 
ComposedException 2 : kotlin.NotImplementedError: An operation is not implemented: not implemented 

ObservableのためにonError()を実装しても、アプリがクラッシュするのを防ぐにはどうすればよいですか? handleRegistrationError(error)のコードがまだ実行されていることに注意してください。

答えて

1

CompositeExceptionは、実際の問題がhandleRegistrationError(error)にあることを示しています。どういうわけか、あなたはそれはあなたがそうちょうどこれを実装(またはTODO()を削除)して、あなたの問題を解決するかもしれませんTODO()

fun TODO(): Nothing = throw NotImplementedError() 

として実現される機能に関連しているほとんどの

kotlin.NotImplementedError: An operation is not implemented: not implemented 

結果として何かをします。

+0

あなたはそうです。私はKotlinには新しく、TODOがNotImplementedErrorを投げるかもしれないことを知らなかった。ご回答有難うございます。受け入れられたとマークされました! –

関連する問題