android 捕获未try的异常
1.Thread.UncaughtExceptionHandler
java里有很多异常如:空指针异常,越界异常,数值转换异常,除0异常,数据库异常等等。如果自己没有try / catch 那么线程就崩溃。
并不能对所有代码都try/catch,如果代码产生了未捕获的异常,又不想让程序崩溃,或者在崩溃之前要做一些收尾工作。怎么办?
Thread.UncaughtExceptionHandler 类可以解决这个问题,当有未捕获异常时,它的 public void uncaughtException(Thread t, Throwable e) 方法会被调用,参数包含了崩溃的线程及相应的异常信息。
Thread类中的 public static void setDefaultUncaughtExceptionHandler(UncaughtExceptionHandler eh) 方法指定接收未捕获异常处理类。通常在 Application 里指定一个生命周期很长的未捕获异常处理类。
2.示例
2.1 自定义Thread.UncaughtExceptionHandler
package com.example.uncrash;
import android.util.Log;
public class CrashHandler implements Thread.UncaughtExceptionHandler {
final String TAG = "CrashHandler";
@Override
public void uncaughtException(Thread t, Throwable e) {
e.printStackTrace();
Log.e(TAG, "uncaughtException: " + e.getMessage() + " thread = " + t.getId());
){
//...
}
//异常信息收集
//应用程序信息收集
//保存错误报告文件到文件。
}
}
2.2 在application里注册
public class UnCrashApplication extends Application {
CrashHandler handler;
@Override
public void onCreate() {
super.onCreate();
handler = new CrashHandler();
Thread.setDefaultUncaughtExceptionHandler(handler);
}
}
2.3 在自定义的线程中注册
private void init(){
new Thread(){
@Override
public void run() {
setUncaughtExceptionHandler(crashHandler);
/ ;
}
}.start();
}
public CrashHandler crashHandler = new CrashHandler();
public class CrashHandler implements Thread.UncaughtExceptionHandler {
final String TAG = "CrashHandler";
@Override
public void uncaughtException(Thread t, Throwable e) {
e.printStackTrace();
Log.e(TAG, "uncaughtException: " + e.getMessage() + " thread = " + t.getId());
){
//...
}
//异常信息收集
//应用程序信息收集
//保存错误报告文件到文件。
}
}
android 捕获未try的异常的更多相关文章
- android 捕获未try的异常、抓取崩溃日志
1.Thread.UncaughtExceptionHandler java里有很多异常如:空指针异常,越界异常,数值转换异常,除0异常,数据库异常等等.如果自己没有try / catch 那么线程就 ...
- WPF捕获未处理的异常
WPF程序中,对于异常的捕获一般使用try/catch块.就像程序中的bug一样,很难保证程序中所有的异常都能够通过try/catch捕获.如果异常没有被捕获,轻则影响用户体验,严重时会导致数据丢失 ...
- C# WinForm捕获未处理的异常
using System; using System.Collections.Generic; using System.Windows.Forms; using System.IO; namespa ...
- java android 捕获未处理异常
1. 定义一个异常处理类 public class ExceptionHandler implements Thread.UncaughtExceptionHandler { public Excep ...
- C# WinForm捕获全局异常(捕获未处理的异常)
static class Program { /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static vo ...
- Android程序Crash时的异常上报
转载请注明来源:http://blog.csdn.net/singwhatiwanna/article/details/17289479 前言 大家都知道,android应用不可避免的会发生crash ...
- Android程序捕获未处理异常,处理与第三方方法冲突时的异常传递
自己的android程序对异常进行了处理,用的也是网上比较流行的CrashHandler,代码如下,就是出现了未处理的异常程序退出,并收集收集设备信息和错误信息仪器保存到SD卡,这里没有上传到服务器. ...
- android捕获程序异常退出
今天看到迅雷动漫里面一个CrashHandler 的类,我猜是崩溃处理类.进去一看.果然.顺便学习一下. Android系统的"程序异常退出",给应用的用户体验造成不良影响.为了捕 ...
- Android捕获全局异常
Android捕获全局异常 程序避免不了出现bug,导致程序崩溃,为了尽量不影响用户体验,可以全局捕获异常 效果图 异常捕获处理前 异常捕获处理后(将程序重新启动) 捕获异常的工具类 package ...
随机推荐
- JavaScript 与JQuery 常用方法比较
http://drupalchina.cn/content/javascript-yu-jquery-chang-yong-fang-fa-bi-jiao 1.加载DOM区别 JavaScript: ...
- JS中变量和常量的定义
var只能声明一个变量,这个变量可以保存任何数据类型的值 ES6之前并没有定义声明常量的方式,ES6标准中引入了新的关键字const来定义常量 使用const定义常量后,常量无法改变 const a= ...
- gogland golang 颜色&字体 colors&font 配置文件
<scheme name="Ya" version="142" parent_scheme="Darcula"> <opt ...
- Hadoop-2.4.0中HDFS文件块大小默认为128M
134217728 / 1024 = 131072 / 1024 = 128
- 编写高质量代码改善C#程序的157个建议——建议88:并行并不总是速度更快
建议88:并行并不总是速度更快 并行所带来的后台任务及任务的管理,都会带来一定的开销,如果一项工作本来就能很快完成,或者说循环体很小,那么并行的速度也许会比非并行要慢. 看这样一个例子,我们比较在同步 ...
- Alpha阶段项目复审(菜就完事了队)
Alpha阶段项目复审 小组 优点 缺点 名次 天冷记得穿秋裤队 实现的功能完整,可以离线下载 下载不稳定,大文件无法下载 1 中午吃啥队 使用方便,操作简单 界面适应不够好 2 只会嘤嘤嘤队 游戏和 ...
- Linux daemon与service 学习笔记
service 常驻在内存中的进程,且可以提供一些系统或网络功能,就是服务. daemon service的提供需要进程的运行,所以实现service的程序我们称为daemon. eg: 实现 ...
- [LeetCode 题解]: String to Interger (atoi)
Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. ...
- 优化案例--改写IN条件为INNER JOIN
--====================================== --原始语句 SET STATISTICS IO ON SELECT COUNT(DISTINCT parent_co ...
- leetcode 字符串中的第一个唯一字符
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引.如果不存在,则返回 -1. 案例: s = "leetcode" 返回 0. s = "loveleetcod ...