java crashhandler_android捕获全局异常,CrashHandler | 学步园

package com.numob.david.util;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.lang.Thread.UncaughtExceptionHandler;

import java.util.Date;

import android.os.Environment;

import android.util.Log;

/**

* 全局处理异常.

*

*/

public class CrashHandler implements UncaughtExceptionHandler {

/** CrashHandler实例 */

private static CrashHandler instance;

/** 获取CrashHandler实例 ,单例模式*/

public static CrashHandler getInstance() {

if (instance == null) {

instance = new CrashHandler();

}

return instance;

}

@Override

public void uncaughtException(Thread arg0, Throwable arg1) {

// ScreenManager.getScreenManager().popActivity(Pay.activity);

// arg0.stop();

// arg0.destroy();

String logdir ;

if(Environment.getExternalStorageDirectory()!=null){

logdir = Environment.getExternalStorageDirectory().getAbsolutePath()

+ File.separator + "snda"+File.separator+"log" ;

File file = new File(logdir);

boolean mkSuccess;

if (!file.isDirectory()) {

mkSuccess = file.mkdirs();

if (!mkSuccess) {

mkSuccess = file.mkdirs();

}

}

try {

FileWriter fw = new FileWriter(logdir+File.separator+"error.log",true);

fw.write(new Date()+"\n");

StackTraceElement[] stackTrace = arg1.getStackTrace();

fw.write(arg1.getMessage() + "\n");

for (int i = 0; i < stackTrace.length; i++) {

fw.write("file:" + stackTrace[i].getFileName() + " class:" + stackTrace[i].getClassName()

+ " method:" + stackTrace[i].getMethodName() + " line:" + stackTrace[i].getLineNumber()

+ "\n");

}

fw.write("\n");

fw.close();

} catch (IOException e) {

Log.e("crash handler", "load file failed...", e.getCause());

}

}

arg1.printStackTrace();

android.os.Process.killProcess(android.os.Process.myPid());

}

}

Activity或是Application中加入这样的代码:

CrashHandler crashHandler = CrashHandler.getInstance();

crashHandler.init(getApplicationContext());

今天只做简单介绍了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值