2017-05-12 72 views
-1

我有一个Android应用程序向服务器发出请求并获取响应。我正在使用Retrofit2OkHttp。 我在JSOn得到响应,然后使用GSON解析。有时,该对象可能为空,应用程序崩溃。我有几个片段的响应,所以如果响应有一些空对象,应用程序可能会在任何部分崩溃。捕捉全局异常并防止应用程序崩溃

因此,我计划设置全局异常捕获类,捕获异常并且不会使应用程序崩溃,但会向用户显示一些自定义对话框,说明"Call Support"。我不想让那个Android对话框"App not responding"。 我该如何做到这一点?即使服务器发送了空对象,我的应用也不能在任何情况下崩溃。

+0

即使服务器发送空对象,应用程序也不会崩溃。改造将会照顾它。可能会检查你的POJO课程。 –

+1

“有时,对象可能为空,应用程序崩溃” - 验证来自服务器的响应并正常处理无效数据,而不是盲目传递数据并崩溃。 “如果响应有一些空对象,我的响应会分成几个片段,因此应用程序可能会在任何部分崩溃” - 集中您的代码以从服务器获取数据,并验证响应。 “即使服务器发送空对象,我的应用也不会崩溃 - 然后验证来自服务器的响应。恕我直言,全球异常处理程序不是一个合适的解决方案。 – CommonsWare

回答

0

当未捕获到异常时,使应用程序崩溃的关键是停止执行意外行为(通常是较小的恶意)。

在你的代码中有一个未被捕获的异常意味着一个方法被要求做一些毫无意义的事情(因此抛出一个异常),并且你的代码从来没有预料到/设计过任何方式从该状态恢复。崩溃应用程序是最好的行为。

如果您(作为开发人员)期望服务器有时会发送空对象,那么您应该尽快处理空对象。从更大的角度来看,如果你期望你的消息模块可能失败并且仍然为你的应用程序设计一个有意义的行为,那么你应该用合理的ExceptionHandler包装整个模块。

相关问题