2016-12-12 6 views
2

Retrofitでhttp-requestを行うときに、onResponseの代わりにonFailureメソッド(Callbackインターフェイスから)が呼び出されることがあります。問題は、このメソッドで返されたThrowablenullフィールドが含まれていることです。意味は、getMessage(),getLocalizedMessage()およびgetCause()の方法です。返信はすべてnullです。RetrofitのonFailureメソッドからのエラーを処理する方法は?

onFailure()がこのように呼び出されている理由はよく知られていますか? onFailure()メソッドが呼び出された理由を知る別の方法はありますか?

+0

このリンクをクリックしてください。それはあなたを助けるでしょう:https://github.com/codepath/android_guides/wiki/Consuming-APIs-with-Retrofit –

答えて

1

コールを実行すると、retrofitはサードパーティのコードをアダプタとコンバーターの形式で実行します。そのため、遭遇する可能性があるさまざまな例外をすべて予測することは困難です。 onFailureが呼び出されると、retrofit、okhttp、またはアダプタまたはコンバータのいずれかが例外を送出しました。あなたはそれをキャッチする必要がないことを除いて、スローされた例外と同様に扱うことができます。デバッグ中は、何が問題になったのか、それとも予防可能なのかを把握するためにt.printStackTrace()を使います。また、例外のタイプをチェックすることで、特定の例外を探すこともできます。たとえば、ネットワーク障害のためIOExceptionが一般的です。 -

if (t instanceof IOException) { 
    // Handle IO exception, maybe check the network and try again. 
} 
関連する問題