在 MVVM 架构中处理来自 api 端点的错误的最佳实践是什么?

Hay*_*yan 6 error-handling android mvvm retrofit2 rx-java2

我的目标(也是问题)是做,比如说,集中的错误处理。在大多数情况下,每个 API 端点的错误将以相同的方式处理,所以我不想有重复或大量if else语句。

我的应用程序的架构对应于developer.android.com 中描述的架构

在此处输入图片说明

所以,这意味着我应该将错误从repovia传递viewModelUI layer (Activity/Fragment),以便从该层进行 UI 更改。

我的代码中的一些小部分:

myService.initiateLogin("Basic " + base64, authBody)
                .enqueue(new Callback<UserTokenModel>() {
                    @Override
                    public void onResponse(Call<UserTokenModel> call, Response<UserTokenModel> response) {
                        userTokenModelMutableLiveData.setValue(response.body());
                    }

                    @Override
                    public void onFailure(Call<UserTokenModel> call, Throwable t) {
                        // TODO better error handling in feature ...
                        userTokenModelMutableLiveData.setValue(null);
                    }
                });
Run Code Online (Sandbox Code Playgroud)

比方说,我们需要表现出吐司每一个onFailure(...)方法调用时或errorBody不会nullonResponse(...)每一个API调用方法。

那么,在保持架构不变的同时进行“集中式”错误处理的建议是什么?

mel*_*nor 1

我认为最好的解决方案是在视图模型中创建一个实时数据对象来传递错误。您可以在任何地方观察到该错误。