在整个Activity / Fragment生命周期中处理异常

时间:2014-11-30 18:30:30

标签: android exception-handling

所以,我试图掌握在Android中处理异常的最佳方式。

我目前的做法:

  • 业务逻辑/库通常会在调用堆栈中引发异常,以便可以处理,除非部分预期异常并且可以在本地处理。
  • 所有活动生命周期函数(如onPause,onResume等)都尝试catch。它们同时捕获Exception和我的自定义BusinessException类。对于业务异常,我显示特定错误,异常显示一般Oops错误,同时在后台记录实际错误。
  • 回调/监听器等也有try / catch,并在异常时调用onFail / error回调。

我的问题是我最终会遇到很多try catch块。虽然这本身并不是很糟糕,但在每个catch块中我都有用于记录错误的样板代码。即准备键值对等。它似乎非常重复。

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

由于

1 个答案:

答案 0 :(得分:1)

以下是我的意见。

  

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

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

  

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

     

回调/监听器等也有try / catch,并在异常时调用onFail / error回调。

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

对于其他一切,我会让我默认未捕获的异常处理程序处理它,在我的情况下通常是ACRA