Retrofit 2 Fehlerbehandlung bei synchronen Aufrufen für 4xx-Fehler

Ich verwende eine Android-Priority-Jobqueue und verwende Retrofit, um synchron zu meiner Ruhe-API zu telefonieren. Ich bin mir jedoch nicht sicher, wie ich mit Fehlern wie 401 Unauthorized Errors umgehen soll, die ich unter Angabe des Fehlers zurücksende. Einfach, wenn Sie asynchrone Anrufe tätigen, aber ich passe meine App für den Job-Manager an. unten ist ein einfacher Versuch Fang für E / A-Ausnahmen, aber 401 422 usw.? Wie macht man das

try {
    PostService postService = ServiceGenerator.createService(PostService.class);
    final Call<Post> call = postService.addPost(post);
    Post newPost = call.execute().body();

    // omitted code here

} catch (IOException e) {
    // handle error
}

BEARBEITE

Die Verwendung des Retrofit-Antwortobjekts war für mich der entscheidende Faktor. Durch die Rückgabe des Retrofit-Antwortobjekts konnte ich

Response<Post> response = call.execute();

if (response.isSuccessful()) {
    // request successful (status code 200, 201)
    Post result = response.body();

    // publish the post added event
    EventBus.getDefault().post(new PostAddedEvent(result));
} else {
    // request not successful (like 400,401,403 etc and 5xx)
    renderApiError(response);
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage