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_APP级异常捕获实现方式

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

sqlcode和sqlerrm

oracle内置函数sqlcode和sqlerrm是特别用在others处理器中,分别用来返回oracle的错误代码和错误消息。 others处理器应该是异常处理块中的最后的异常处理器,因为它是用来...
  • wacthamu
  • wacthamu
  • 2012年11月02日 09:26
  • 384

android App级别的bug信息收集(crash信息保存和发送)

收集app的crash信息,保存并发送给服务器后端。在对于程序中没有做异常处理的程序。调用系统封装的UncaughtException类进行处理。 第一步,封装handler。 package c...
  • fuqinyijiu
  • fuqinyijiu
  • 2015年01月21日 11:20
  • 4448

Android 捕捉app系统中未处理的异常

一:为什么要处理? 其实我们都知道,在开发过程中,自己的app系统或许有许多隐藏的异常,自己没有捕捉到,那么关于异常的捕捉,这是相当重要的,如果系统发生崩溃,那么至少也可以让系统挂在系统之内,不会...
  • u011546655
  • u011546655
  • 2015年05月07日 21:15
  • 1923

Application_Error 中捕获错误信息

Exception ex = Server.GetLastError().GetBaseException(); if (ex.Message.IndexOf("does no...
  • sscrazy
  • sscrazy
  • 2014年02月13日 16:40
  • 1040

安卓APP崩溃(crash)后重新启动,捕获全局异常重启APP

在安卓应用中,如果是偶发性bug导致APP崩溃,APP可能会直接闪退或者白屏,用户体验不太好,我们可以在application中捕获到全局异常,然后再进行处理。 首先创建一个MainApplicati...
  • jiaweihaoku
  • jiaweihaoku
  • 2017年09月21日 16:15
  • 456

获取已发布的app错误信息:

获取已发布的app错误信息: 第一种方法: 在uiapplication.m添加 - (BOOL)application:(UIApplication *)application d...
  • kfq0071
  • kfq0071
  • 2014年10月22日 10:37
  • 753

Andoird Crash的跟踪方法,使用腾讯Bugly来捕捉一些疑难杂症,让我们APP稳定上线

Andoird Crash的跟踪方法,使用腾讯Bugly来捕捉一些疑难杂症,让我们APP稳定上线 我们在开发中常常会注意到一些Crash,这正是很头疼的,而且Crash会带来很多意想不到的状态,很...
  • qq_26787115
  • qq_26787115
  • 2016年06月10日 18:57
  • 7561

js错误捕获

今天谈一下在IE浏览器下返回执行错误的Javascript代码所在的问题。其中在IE浏览器下,如果你使用了try-catch,那么当出现异常的时候,IE浏览器会传递一个Error对象。 ...
  • bianjing40
  • bianjing40
  • 2016年12月15日 16:24
  • 533

VS2008_C++捕获内存错误

修改编译选项:C/C++ -> CodeGeneration -> Enable C++ Exceptions 为: Yes With SEH Exceptions (/EHa)。 即可正常捕获内存访...
  • great3779
  • great3779
  • 2010年12月30日 15:05
  • 1301
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android 捕捉app错误信息
举报原因:
原因补充:

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