改造2错误响应处理

时间:2018-07-28 12:00:20

标签: android retrofit

我有一种下载api数据的方法。但是我得到了有关空数据的响应,因此我需要检查数据是否正确。

调用方法:

try {
        fetchChartData();
    } catch (EmptyResponseException e) {
        view.showError();
    }

并获取数据:

public void fetchChartData() throws EmptyResponseException {   
Call<ChartModel> dailyChartCall = ... //some call
dailyChartCall.enqueue(new Callback<ChartModel>() {
        @Override
        public void onResponse(Call<ChartModel> call, Response<ChartModel> response) {
            //EMPTY
            if(response.body().getData().size() == 0){
            <<-- THROW HERE
            } else ...

我应该如何实现异常并将其传递给顶部? 简单的“引发新的EmptyResponseException”不起作用,因为onResponse是匿名类。

1 个答案:

答案 0 :(得分:0)

我假设您正在使用MVP结构来设计应用。

因此,除了捕获异常外,您还可以这样做

   public void fetchChartData(){   
        Call<ChartModel> dailyChartCall = ... //some call
        dailyChartCall.enqueue(new Callback<ChartModel>() {
        @Override
        public void onResponse(Call<ChartModel> call, Response<ChartModel> response) {
            //EMPTY
            if(response.body().getData().size() == 0){
               ***presenter.showError();***
            } else ...
            {
              >>>> do your logic here <<<< 
              presenter.showChartData();
            }

在演示者showError和showChartData中,您可以调用相应的视图函数。