Android 中更好的错误处理方式

问题描述

假设我的应用程序中有这种架构

Architecture

我的问题是处理错误的最佳时间是什么时候?

  1. 是否应该让网络源和缓存源抛出错误,我们在存储库层处理所有可能的错误
  2. 我是否应该处理特定于框架的错误,并返回一个密封的类,表示网络调用错误或成功

解决方法

取决于用例

  • 如果用户需要数据,那么您需要将错误一直发送到您的 UI 以通知用户以确保用户不会只看到空白屏幕或体验意外的 UI。对于这种情况,您可以在 Kotlin 中密封类。
  • 如果您正在获取用户不知道的内容,例如在后台将数据从远程同步到本地缓存,在此类用户不知道/不关心错误的情况下,您的应用程序应该处理。理想的方法是检查存储库中的句柄错误,如果出现问题,则在那里重试或从备用源等获取数据。
  • 第三种情况将在多个级别进行处理,假设您正在从网络获取数据,它失败了,您可以在存储库级别处理重试逻辑,并且在您用尽重试尝试但仍然失败后,您需要确认用户为他可能期待有什么东西出现。