首页 > 代码库 > Android客户端项目全局异常处理和服务器数据保存

Android客户端项目全局异常处理和服务器数据保存

爱生活,爱Android!相信每一个Android开发人员都喜爱自己的工作,每天不停的生产代码,不停的解决Bug,

乐在其中,不断的学习,不断的总结,我们应该积累出自己写代码的良好习惯,慢慢的,我们就会固定出完全属于

自己的东西,下面是自己写项目时,碰到的一个问题,跟大家分享一下,有见解不到之处,还请大家指教,谢谢!

大家都知道,Android是基于Java的,本身会产生很多我们写代码时预料不到的异常,而每一个异常都很可能

导致我们的程序崩溃,比如最常见的NullException、ClassCastException、ClassNotFoundException、ANR等等

的,而Android本身的OS会捕捉到这些异常,在dalvik中处理,然后退出程序,退出的界面也很不友好,在这种情况

下,我们就有了自己的想法,如果我们能捕捉到这些异常,就可以将其利用起来,提升我们的应用质量,我们可以

在捕捉到异常后进行如下操作:

1、定义自己的处理界面,友好的展现给客户,提高用户体验

2、收集错误信息,及时修改,提高代码的稳定性

光从文字看起来,这两点非常简单,但是当你自己将异常处理机制布署在自己项目中时,你就知道它对我们的项目

带来多大的帮助!

下面来看一下,如何给自己的项目中布署全局的异常处理,步骤分为如下几步:

第一步,注册Application,在开发应用时都会和Activity打交道,而Application使用的就相对较少了。 Application

是用来管理应用程序的全局状态的,比如载入资源文件。 在应用程序启动的时候Application会首先创建,然后才会根

据情况(Intent)启动相应的Activity或者Service。 本文将在Application中注册未捕获异常处理器。 

第二步,实现UncaughtExceptionHandler,UncaughtExceptionHandler是线程未捕获异常控制器,用来处理未捕

获异常的。 如果程序出现了未捕获异常默认情况下则会出现强行关闭对话框实现该接口并注册为程序中的默认未捕获异

常处理 这样当未捕获异常发生时,就可以做些异常处理操作 例如:收集异常信息,发送错误报告 等。当程序发生Uncaught

异常的时候,由该类来接管程序,并记录发送错误报告。

第三步,异常处理操作的收集异常信息

第四步,异常处理操作的本地保存异常报告

第五步,异常处理操作的将异常信息发送到服务器

以上的五步,若大体的分类的话,只有第一步、第二步,后边的第三步、第四步、第五步都是在异常处理类中实现的,只

是因为它是具体的处理过程,比较重要,所以本文中单独列出来。

下面我们来看一下代码实现:

注册Application


实现UncaughtExceptionHandler

当出现异常时,会进入uncaughtException方法处理,我们所有的控制都可以加在这里



收集异常信息


本地保存异常报告这一步非常实用,一些捕捉不到的异常,我们可以通过这样的方式将它实例化,保存

在本地文件中,里边的详细的信息,我们可以像在logcat中一样,看到它具体是出在哪个类的哪一行,从而进行

修改,非常好用,强力推荐!


将异常信息发送到服务器


到异常信息后,我们还可以搭建自己的服务器,收集异常信息,想怎么样保存,就看大家自己的习惯了!

我这里是拿到异常数据,保存到本地数据库了,如下示例。




Android客户端项目全局异常处理和服务器数据保存