应用异常终止时将错误发给服务器的原理

原创 2013年12月03日 13:48:30

    虽然我们的APP在发布之前会经过层层的测试,保证万无一失,但是人算不如天算,总有一些异常是没法避免的。所以,对于开发者而言,收集这些异常变得尤为重要了,处理这些异常可是我们的应用更加健壮。对于异常反馈的机制如下:

Thread类中有一个静态方法Thread.setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh),当线程由于位被捕获的异常而突然终止的时候,就会调用传进去的Thread.UncaughtExceptionHandler接口,那么我就在这个接口的uncaughtException(Thread t, Throwable e)方法中手机放生的异常,上传到服务器。

通用做法:

一、创建一个类继承Application类,并在配置文件中配置

<application android:name="com.example.crashtest.app.CrashApplicaiton"/>


二、写一个类实现Thread.UncaughtExceptionHandler接口。

public static class CrashHandler implements UncaughtExceptionHandler{

private static final  CrashHandler INSTANCE = null;

public static CrashHandler getInstance(){

if(INSTANCE != null){

return INSTANCE;

}else{

return new CrashHandler();

}

}

public void init(){

Thread.setDefaultUncaughtExceptionHandler(this);

}

@Override

public void uncaughtException(Thread thread, Throwable ex) {

thread.interrupt();

System.out.println("程序崩溃了,请在此处进行处理");

//关闭打开的Activity,根据自己的需求在这里面进行具体的处理。

for(int i = 0;i<activitys.size();i++){

Activity act = activitys.get(i);

act.finish();

}

}

}


三、Application的onCreate()方法中初始化CrashHandler

@Override

public void onCreate() {

CrashHandler ch = CrashHandler.getInstance();

ch.init();

if(activitys == null){

activitys = new ArrayList<Activity>();

}

super.onCreate();

}



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Retrofit+RxJava 优雅的处理服务器返回异常、错误

开始本博客之前,请先阅读: Retrofit请求数据对错误以及网络异常的处理 异常&错误实际开发经常有这种情况,比如登录请求,接口返回的 信息包括请求返回的状态:失败还是成功,错误码,User对...

Dotnet跨应用程序域访问和需要特别注意的地方(WCF消息通道处于错误状态异常中的一种情况)

今天在做分布式计算原型的时候出现了WCF调用错误,错误大意是指消息通道处于错误状态,经过跟踪调试,发现是由于跨域调用的问题造成的.问题场景是这样:客户端C通过WCF调用远程服务,该服务S启用一个新的应...

COM组件设计与应用(十二) 错误与异常处理

COM组件设计与应用(十二) 错误与异常处理 作者:杨老师 下载源代码 一、前言   程序设计中,错误处理必不可少,而且通常要占用很大的篇幅。本回书着落在 COM 中的错误(异常...

JavaWeb应用中错误和异常处理方法研究

0.引言              大多数的JavaWeb应用一般都采用多层架构[1~2], 即软件结构采用分层的思想。这种分层架构的软件必然使软件的耦合性降低,内聚性加强,但分层带来的缺点是增加了软...

Android 应用程序异常信息捕获发送至服务器

对于已经上线的项目,为了避免有没有考虑到的bug发生,方便维护以及为了有更好的用户体验,不能再发生异常的时候弹出系统默认的提示框. 而是应该由自己程序本身捕获,先保存到本地,当下次打开软件时上传到服务...

服务器更新应用导致的异常及ln命令的使用

环境:CentOS 5.11 出现问题: 线上服务器运行mysql和gitlab,今天下午gitlab突然发生崩溃,尝试重启gitlab,重启失败。从gitlab日志目录下的unicorn.std...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)