android捕获全局异常,CrashHandler

来源:互联网 发布:mac查看php安装目录 编辑:程序博客网 时间:2024/05/29 02:18

  1. package com.numob.david.util;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileWriter;  
  5. import java.io.IOException;  
  6. import java.lang.Thread.UncaughtExceptionHandler;  
  7. import java.util.Date;  
  8.   
  9. import android.os.Environment;  
  10. import android.util.Log;  
  11.   
  12. /** 
  13.  * 全局处理异常. 
  14.  * 
  15.  */  
  16. public class CrashHandler implements UncaughtExceptionHandler {  
  17.     /** CrashHandler实例 */  
  18.   
  19.     private static CrashHandler instance;  
  20.   
  21.     /** 获取CrashHandler实例 ,单例模式*/  
  22.   
  23.     public static CrashHandler getInstance() {  
  24.         if (instance == null) {  
  25.             instance = new CrashHandler();  
  26.         }  
  27.         return instance;  
  28.     }  
  29.   
  30.     @Override  
  31.     public void uncaughtException(Thread arg0, Throwable arg1) {  
  32. //        ScreenManager.getScreenManager().popActivity(Pay.activity);  
  33. //         arg0.stop();  
  34. //         arg0.destroy();  
  35.           
  36.         String logdir ;  
  37.         if(Environment.getExternalStorageDirectory()!=null){  
  38.             logdir = Environment.getExternalStorageDirectory().getAbsolutePath()  
  39.                     + File.separator + "snda"+File.separator+"log" ;  
  40.               
  41.               
  42.             File file = new File(logdir);  
  43.             boolean mkSuccess;  
  44.             if (!file.isDirectory()) {  
  45.                 mkSuccess = file.mkdirs();  
  46.                 if (!mkSuccess) {  
  47.                     mkSuccess = file.mkdirs();  
  48.                 }  
  49.             }  
  50.             try {  
  51.                 FileWriter fw = new FileWriter(logdir+File.separator+"error.log",true);  
  52.                 fw.write(new Date()+"\n");  
  53.                 StackTraceElement[] stackTrace = arg1.getStackTrace();  
  54.                 fw.write(arg1.getMessage() + "\n");  
  55.                 for (int i = 0; i < stackTrace.length; i++) {  
  56.                     fw.write("file:" + stackTrace[i].getFileName() + " class:" + stackTrace[i].getClassName()  
  57.                             + " method:" + stackTrace[i].getMethodName() + " line:" + stackTrace[i].getLineNumber()  
  58.                             + "\n");  
  59.                 }  
  60.                 fw.write("\n");  
  61.                 fw.close();  
  62.             } catch (IOException e) {  
  63.                 Log.e("crash handler""load file failed...", e.getCause());  
  64.             }  
  65.         }  
  66.         arg1.printStackTrace();  
  67.         android.os.Process.killProcess(android.os.Process.myPid());   
  68.     }  
  69.   
  70. }  
[java] view plaincopyprint?
  1.   


今天只做简单介绍了。

0 0