如何通过改造+协程处理错误响应

A.R*_*ein 2 android coroutine kotlin retrofit

我是协程新手。通过本教程尝试使用改造+协程+ Jake Wharton的CoroutineCallAdapterFactory

但是不知道如何处理json响应错误。例如错误可能是这样的:

{
  "code": 105,
  "error": "invalid field name: bl!ng"
} 
Run Code Online (Sandbox Code Playgroud)

我认为在TmdbMovie类中添加代码错误字段(并检查对象是否为空字段)-是错误的。然后-在TmdbViewModel中启动协程后如何使用错误字段?

mus*_*off 5

try/catchawait在本作推荐@JakeWharton 问题

try {
    youService().await()
} catch(ex: HttpException) {
    // do your handling here
}
Run Code Online (Sandbox Code Playgroud)

  • @ Vega180,捕获HttpException将使您能够从服务器获取错误响应(在我们的示例中为JSON格式)。例如ex.errorBody()?. toString()。然后,只要愿意,就可以使用您喜欢的JSON序列化器/反序列化器库解析为一个对象。我还建议也捕获其他异常(例如,“ SocketTimeoutException”,“ UnknownHostException”等),以在必要时提供更多反馈。例如,5xx错误将不会作为`HttpException`回来,而您需要相应地处理。 (2认同)