Android 中如何捕获未捕获的异常
Posted YaoYong_BigData
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 中如何捕获未捕获的异常相关的知识,希望对你有一定的参考价值。
(一)UncaughtExceptionHandler1、自定义一个Application , 比如叫MyApplication 继承Application 实现UncaughtExceptionHandler。
2、覆写UncaughtExceptionHandler 的onCreate 和uncaughtException 方法。
@Override
public void onCreate()
super.onCreate();
Thread.setDefaultUncaughtExceptionHandler(this);
@Override
public void uncaughtException(final Thread thread, final Throwable ex)
new Thread(new Runnable()
@Override
public void run()
Looper.prepare();
System.out.println(Thread.currentThread());
Toast.makeText(getApplicationContext(), "thread="+thread.getId()+"ex="+ex.toString(), 1).show();
Looper.loop();
).start();
SystemClock.sleep(3000);
android.os.Process.killProcess(android.os.Process.myPid());
注意:上面的代码只是简单的将异常打印出来。
在onCreate 方法中我们给Thread 类设置默认异常处理handler,如果这句代码不执行则一切都是白搭。
在uncaughtException 方法中我们必须新开辟个线程进行我们异常的收集工作,然后将系统给杀死。
3、在AndroidManifest 中配置该Application
<application
android:name="com.example.uncatchexception.MyApplication"
---------------------------------------------------------------------------------
(二)Bug 收集工具Crashlytics
Crashlytics 是专门为移动应用开发者提供的保存和分析应用崩溃的工具。国内主要使用的是友盟做数据统计。
Crashlytics 的好处:
1.Crashlytics 不会漏掉任何应用崩溃信息。
2.Crashlytics 可以象Bug 管理工具那样,管理这些崩溃日志。
3.Crashlytics 可以每天和每周将崩溃信息汇总发到你的邮箱,所有信息一目了然。
使用步骤:
1.注册需要审核通过才能使用,国内同类产品顶多发个邮箱激活链接;
2.支持Eclipse、Intellij IDEA 和Android Studio 等三大IDE;
3.Eclipse 插件是ios 主题风格UI,跟其他plugin 在一起简直是鹤立鸡群;
4.只要登录帐号并选择项目,会自动导入jar 包并生成一个序列号,然后在AndroidManifest.xml 和启动Activity 的入口添加初始化代码,可以说是一键式操作,当然要使用除错误统计外的其他功能还是得自己添加代码;
5.不像友盟等国内同类产品,将固定的序列号直接写入xml 文件,而是动态自动生成的;当然这个存放序列号的xml 文件也是不能修改和提交到版本控制系统的;
6.后台可以设置邮件提醒,当然这个最好不要开启,Android 开发那数量惊人、千奇百怪的错误信息你懂的。
7.不仅能统计到UncaughtException 这种未捕获的Crash 异常信息,只要在try/catch 代码块的catch 中添加一行代码就能统计到任何异常;
try myMethodThatThrows(); catch(Exception e) Crashlytics.logException(e);
//handle your exception here!
8.相当详细的错误信息,不仅仅是简单的打印StackTrace 信息;并且能看到最近一次crash
的机器可用内存等信息,而不仅仅是简单统计机型和版本号。
使用连接:http://blog.csdn.net/smking/article/details/39320695
以上是关于Android 中如何捕获未捕获的异常的主要内容,如果未能解决你的问题,请参考以下文章
Android视图:未捕获的处理程序:线程主因未捕获的异常而退出