如何捕获未捕获的异常
来源:互联网 发布:软件开发流程模版 编辑:程序博客网 时间:2024/05/16 17:24
UncaughtExceptionHandler
1、自 定 义 一 个 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
<applicationandroid: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); }
8.相当详细的错误信息,不仅仅是简单的打印 StackTrace 信息;并且能看到最近一次 crash 的机器可用内存等信息,而不仅仅是简单统计机型和版本号。
- 如何捕获未捕获的异常
- [Android]如何捕获未捕获的异常
- 未捕获的异常
- Android 中如何捕获未捕获的异常
- 捕获程序中未捕获的异常
- 未捕获异常的处理
- 未捕获的异常 'NSInternalInconsistencyException'
- C++ 未捕获的异常
- C#.NET--如何处理程序的未捕获异常
- Android中如何处理未捕获的异常
- Android如何处理未捕获异常
- Android如何处理未捕获异常
- 捕获到应用程序中所有未捕获到的异常
- 安卓中捕获未捕获的异常信息CrashHandler
- Android-捕获运行时未捕获的异常
- .Net 下未捕获异常的处理
- .Net 下未捕获异常的处理
- .Net 下未捕获异常的处理
- Maven3 安装使用(二)
- Spring4.3.3 WebSocket-STOMP协议集成 (2.1)-WebSocket-stomp子协议通讯小栗子
- js运动实例-淘宝幻灯片
- 数组、指针与字符串
- Oracle-11g学习3 - grad安装1
- 如何捕获未捕获的异常
- 1592 Database
- 用boost::thread起一个线程
- 接受短信广播,需要给广播接收者添加的action
- 网页加速的14条法则
- 协议森林05 我尽力 (IP协议详解)
- android-实现自定义字体
- spyder中添加包及导入提示no commands supplied处理
- 《这个杀手不太冷》