面试题答案
一键面试在Kotlin Android协程中使用Retrofit结合协程发起网络请求时,可以通过try-catch
块来捕获异常。
- 定义Retrofit接口:
interface ApiService {
@GET("your_api_endpoint")
suspend fun getResponse(): Response<YourResponseType>
}
- 创建Retrofit实例:
val retrofit = Retrofit.Builder()
.baseUrl("https://your_base_url/")
.addConverterFactory(GsonConverterFactory.create())
.build()
val apiService = retrofit.create(ApiService::class.java)
- 发起网络请求并处理异常:
GlobalScope.launch {
try {
val response = apiService.getResponse()
if (response.isSuccessful) {
val result = response.body()
// 处理成功的响应
} else {
// 处理服务器返回的错误,比如404, 500等
Log.e("TAG", "Server error: ${response.code()}")
}
} catch (e: IOException) {
// 处理网络异常,如网络不可用等
Log.e("TAG", "Network error: ${e.message}")
} catch (e: HttpException) {
// 处理HTTP相关的异常
Log.e("TAG", "Http error: ${e.message}")
} catch (e: Exception) {
// 处理其他未知异常
Log.e("TAG", "Unexpected error: ${e.message}")
}
}
上述代码展示了如何在Kotlin协程中使用Retrofit发起网络请求,并通过try-catch
块捕获网络异常、HTTP异常以及其他可能出现的异常。根据具体的异常类型,我们可以进行相应的处理,比如提示用户网络问题,或者根据服务器返回的错误码进行特定的处理。
注意:GlobalScope.launch
这里只是一个简单示例,实际开发中可能需要根据场景使用合适的 CoroutineScope
,如 viewModelScope
等。