Tratamiento de errores de llamada síncrona de modificación 2 para errores 4xx

Estoy usando una cola de trabajo con prioridad de Android y uso la actualización para hacer llamadas sincrónicas a mi API de descanso, pero no estoy seguro de cómo manejar errores como 401 Errores no autorizados que envío de regreso json indicando el error. Simple cuando hago llamadas asíncronas, pero estoy adaptando mi aplicación para el administrador de trabajos. a continuación hay un simple intento de captura para las excepciones de IO, pero 401, 422, etc. ¿Como hacer esto?

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
}

EDITAR

El uso del objeto de respuesta de modificación fue el factor decisivo para mí, devolver el objeto de respuesta de modificación me permitió

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);
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta