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

标签 android exception

因此,我正在努力掌握在 Android 中处理异常的最佳方式。

我目前的做法:

  • 业务逻辑/库通常会在调用堆栈中抛出异常以便进行处理,除非异常是部分预期的并且可以在本地处理。
  • 所有 Activity 生命周期函数,如 onPause、onResume 等都有 try catch。他们捕获异常和我的自定义 BusinessException 类。对于业务异常,我会显示一个特定的错误,Exceptions 会显示一个通用的 Oops 错误,同时在后台记录实际错误。
  • 回调/监听器等也有 try/catch 和异常调用 onFail/error 回调。

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

其他人在做什么,或者您知道我应该关注的任何开源项目?

谢谢

最佳答案

以下主要是我的观点。

Business logic/libraries typically throw exceptions up the call stack so that can be handled, unless the exception is partially expected and can be handled locally.

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

All activity lifecycle functions such as onPause, onResume etc have try catch. They catch both Exception and my custom BusinessException class. For business exceptions I show a specific error and Exceptions show a generic Oops error, while logging the actual error in the background.

Callbacks/listeners etc also have try/catch and upon exception call the onFail/error callback.

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

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

关于android - 在整个 Activity/Fragment 生命周期中处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27216667/

相关文章:

java - android 从 PreferenceScreen 中的图库中选择图像?

java - 我需要做一个加入购物车的功能(饮料应用程序)

java - Android 由 : java. lang.RuntimeException 引起

c++ - Visual Studio 显示错误的 SEH 异常位置

c# - 什么处理对 asp.net 页面中的 WebMethod 的请求

c# - 如何评估即时窗口中未处理的异常属性

java - 具有约束访问问题的通用类

android - 使用 min3d/Rajawali 框架(android)在触摸时围绕 3d 对象旋转

Java 循环整个代码 3 次

c++ - 异常(exception):设备为nullptr。 D3D11中的读取访问冲突