android 捕捉app错误信息

原创 2013年12月05日 11:51:19

定义MyCrashHandler类,该类实现java.lang.Thread.UncaughtExceptionHandler接口。

import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.lang.Thread.UncaughtExceptionHandler;

import org.json.JSONException;
import org.json.JSONObject;


import android.content.Context;
import android.os.Build;
import android.os.Looper;

public class MyCrashHandler implements UncaughtExceptionHandler {
    private static MyCrashHandler myCrashHandler;
    private Context context;
   

    private MyCrashHandler() {

    }

    public static synchronized MyCrashHandler getInstance() {
        if (myCrashHandler != null) {
            return myCrashHandler;
        } else {
            myCrashHandler = new MyCrashHandler();
            return myCrashHandler;
        }
    }

    public void init(Context context) {
        this.context = context;
    }

    public void uncaughtException(Thread thread, final Throwable arg1) {
        
            new Thread() {
                @Override
                public void run() {
                    super.run();
                    Looper.prepare();
                    String errorinfo = getErrorInfo(arg1);
                   //TODO  处理errorinfo


                    Looper.loop();
                }

            }.start();
    //Thread.sleep()是为了等待上面处理errorinfo的线程结束。
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        android.os.Process.killProcess(android.os.Process.myPid());
        
    }

   

    private String getErrorInfo(Throwable arg1) {
        Writer writer = new StringWriter();
        PrintWriter pw = new PrintWriter(writer);
        arg1.printStackTrace(pw);
        pw.close();
        String error = writer.toString();
        return error;
    }

}
使用MyCrashHandler捕获异常

    MyCrashHandler handler = MyCrashHandler.getInstance();
    handler.init(context.getApplicationContext());
    Thread.setDefaultUncaughtExceptionHandler(handler);//将handler设置为默认



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

相关文章推荐

Android 对程序异常崩溃的捕捉

[java] view plaincopyprint? 以下为异常捕捉处理代码:   [java] view plaincopyprint? import java...

Android如何捕获应用的crash信息

我们的应用不可避免的会发生crash,如果是在调试阶段,我们可以使用Logcat查看异常信息。但是如果应用发布之后呢?如果在用户那边crash了,如果我们可以捕获这些crash信息,那么对我们定位cr...

Android_APP级异常捕获实现方式

描述:App级异常捕获,并记录下CrashLog到文件。 以下,代码。 在Application的,onCreate中,初始化自定义的CrashHandler import android.app.A...
  • ytjd926
  • ytjd926
  • 2013年08月16日 16:43
  • 13926

小黑小波比.在app.awf.task中调用自定义错误信息

1.定义错误信息方法: task.errors = { "record_121": { code: 100121, description: "填写内容不完整" }, "record_...

Android 错误信息捕获发送至服务器

http://www.cnblogs.com/stay/archive/2011/07/21/2113167.html 程序员最头疼的事情就是bug和debug。这次debug长达2...

[android]编译时出现/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libz.so when searching for -lz错误信息

http://0123.blog.163.com/blog/static/47883120101024104416786/编译时出现/usr/bin/ld: skipping incompatible...
  • hnmsky
  • hnmsky
  • 2011年02月27日 19:17
  • 2457

Android 错误信息捕获发送至服务器【原创】

先讲下原理,跟JavaEE的自定义异常捕获一样,将错误一直向上抛,然后在最上层统一处理。这里就可以获得Exception Message,进行保存操作 异常捕获类如下: /** * @au...

Android 崩溃异常时弹出Dialog让用户选择是否上传错误信息

想必凡是使用安卓手机的童鞋们都碰到过这样的情况,不知道是内存还是什么的原因,弹出个提示框,某某应用已终止,对这类的应用,我们会没来由的觉得烦躁,严重点就会删除,所以作为程序员,我们在开发应用的时候,可...

Android 判断json格式, 将错误信息提交给服务器

开发中发现, 服务器偶尔会发送错误格式 json 给 Android 客户端, 导致 Android 客户端 json解析失败, 应用异常.  并非服务器有意坑客户端, 而是客户端请求服务器数据时,...
  • xkjscm
  • xkjscm
  • 2016年05月07日 17:38
  • 1998

android native开发 错误信息定位:Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 4785 (XXX)

最近开始做android底层开发,经常遇到C/C++代码报错,logcat只给出一大串堆栈信息,而无法定位到具体代码段,后来网上搜寻发现可以使用addr2line工具根据出错地址映射到出错行,例如: ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android 捕捉app错误信息
举报原因:
原因补充:

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