异常捕捉类,调用Throwable的getMessage()方法导致App卡死,无报错,求大神指点

idea_however 2017-09-08 07:02:31
先上代码

public class CrashHandler implements Thread.UncaughtExceptionHandler {
//系统默认的
private Thread.UncaughtExceptionHandler mDefaultHandler;
//context
private Context mContext;
//格式化时间
private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");

private static CrashHandler mInstance;

private CrashHandler(){}

public static synchronized CrashHandler getInstance() {
if (mInstance == null)
mInstance = new CrashHandler();
return mInstance;
}

public void init(Context context) {
mContext = context;
//获取系统默认的UncaughtException处理器
mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();
//设置该CrashHandler为程序的默认处理器
Thread.setDefaultUncaughtExceptionHandler(this);
}

@Override
public void uncaughtException(Thread t, Throwable e) {
Log.e("tsb1",e.toString());
Log.e("tsb2",e.getMessage());
Log.e("tsb3","123");
}
}


打印信息只有一条,后两条都没有
09-08 18:56:05.255 26637-26637/com.however.yiduobang E/tsb1: java.lang.NullPointerException

只有第一个log有打印,App直接卡死无响应,也没有错误信息,无响应后打印信息也不在更新

求大神们指点
...全文
326 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jklwan 2017-09-11
  • 打赏
  • 举报
回复
不判断e是否为空吗?而且e.getMessage()可能为null,Log打印不了null的
xiaohuh421 2017-09-11
  • 打赏
  • 举报
回复
Log.e("tsb1",e.toString()); Log.e("tsb2",e.getMessage()); Log.e("tsb3","123"); 你果你确定是在这几句崩溃 的. 那么你在第一句下断点, 然后调试运行程序, 不过, 从机制上看, 是不可能的. 因为抛异常时, 一般都会有异常对象的.

80,492

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧