Android 在整个活动/片段生命周期中处理异常

Android 在整个活动/片段生命周期中处理异常,android,exception-handling,Android,Exception Handling,因此,我正试图掌握在Android中处理异常的最佳方法 我目前的做法是: 业务逻辑/库通常会在调用堆栈中抛出异常,以便可以处理,除非异常是部分预期的并且可以在本地处理 所有活动生命周期功能(如onPause、onResume等)都有try-catch。它们捕获Exception和我的自定义BusinessException类。对于业务异常,我显示一个特定的错误,异常显示一个通用的Oops错误,同时在后台记录实际的错误 回调/侦听器等还具有try/catch和onFail/error回调 我的

因此,我正试图掌握在Android中处理异常的最佳方法

我目前的做法是:

  • 业务逻辑/库通常会在调用堆栈中抛出异常,以便可以处理,除非异常是部分预期的并且可以在本地处理
  • 所有活动生命周期功能(如onPause、onResume等)都有try-catch。它们捕获Exception和我的自定义BusinessException类。对于业务异常,我显示一个特定的错误,异常显示一个通用的Oops错误,同时在后台记录实际的错误
  • 回调/侦听器等还具有try/catch和onFail/error回调
我的问题是,我最终会遇到很多“尝试-捕捉”障碍。虽然这本身并不糟糕,但在每个catch块中,我都有用于记录错误的样板代码。i、 准备键值对等等。这看起来很重复

其他人做什么,或者你知道我应该看的任何开源项目


谢谢

以下主要是我的意见

业务逻辑/库通常会在调用堆栈中抛出异常,以便可以处理,除非异常是部分预期的并且可以在本地处理

本地处理很好。抛出异常以强制调用堆栈中更高的本地处理是可以的。否则,我会使用事件总线告诉我的UI层(如果它在附近的话)问题发生了,如果用户需要知道问题,并且我们从UI的角度来看不在前台,可能会使用回退机制发出
通知

所有活动生命周期功能(如onPause、onResume等)都有try-catch。它们捕获Exception和我的自定义BusinessException类。对于业务异常,我显示一个特定的错误,异常显示一个通用的Oops错误,同时在后台记录实际的错误

回调/侦听器等还具有try/catch和onFail/error回调

我只担心已检查的异常和预期的未检查的异常(例如,调用第三方活动时,
ActivityNotFoundException
),方法与前面描述的相同

对于其他方面,我会让默认的未捕获异常处理程序来处理它,在我的例子中通常是这样