Android 全局异常处理之UncaughtExceptionHandler

Qt+WinDbg分析程序崩溃原因 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、dmp文件如何生成?1.自定义异常捕获入口函数2.生成pdb文件3.测试程序二、利用winDbg进行分析1.打开工具并配置相关信息2.开始分析总结 前言 程序开发免不了产生错误,其中最头疼的当属程序莫名其妙的崩溃,而且你还不知道具体原因。若是在开发阶段还好,自己可以debug一步步调试,但是一旦发布了,就没那么容易定位了。那么这个时候,就需要查看程序运行的log来查询了,当然还有一种就是在程序崩溃前弹出一个窗口,生成对 阅读详情

在日常开发中可能有需要将机器奔溃日志保存本机,以便保存到本地。那么该如何做呢

实现UncaughtExceptionHandler接口

public class ApplicationCrashHandler implements Thread.UncaughtExceptionHandler {
    private static final String TAG = "ApplicationCrashHandler";

    private Context context; 
    private Thread.UncaughtExceptionHandler defalutHandler;


    /**
     * 异常处理初始化
     *
     * @param context
     */
    public void init(Context context) {
        this.context = context;
        // 获取系统默认的UncaughtException处理器
        defalutHandler = Thread.getDefaultUncaughtExceptionHandler();
        // 设置该CrashHandler为程序的默认处理器
        Thread.setDefaultUncaughtExceptionHandler(this);
    }

    /**
     * 当UncaughtException发生时会转入该函数来处理
     */
    @Override
    public void uncaughtException(Thread thread, Throwable ex) {

        // 自定义错误处理
        boolean res = handleException(ex);
        if (!res && defalutHandler != null) {
            // 如果用户没有处理则让系统默认的异常处理器来处理
            defalutHandler.uncaughtException(thread, ex);

        } else {
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                Log.e(TAG, "error : ", e);
            }
            ex.printStackTrace();
          
            // 退出程序
            android.os.Process.killProcess(android.os.Process.myPid());
            System.exit(0);
        }
    }

    /**
     * 自定义错误处理,收集错误信息 发送错误报告等操作均在此完成.
     *
     * @param ex
     * @return true:如果处理了该异常信息;否则返回false.
     */
    private boolean handleException(final Throwable ex) {
        if (ex == null) {
            return false;
        }
		   //输出带行数的具体错误信息
            String  errorStr= Log.getStackTraceString(ex);//直接将该信息直接写入文件即可
            Log.e(TAG, "error : " + errorStr);		

        return true;
    }
}

注册UncaughtExceptionHandler接口

public class MyApplication extends Application {

    private static final String TAG = "MyApplication";

    @Override
    public void onCreate() {
        super.onCreate();
        //注册代码
            ApplicationCrashHandler crashHandler = new ApplicationCrashHandler();
            crashHandler.init(getApplicationContext());
    }
}

或者在Activity的onCreate里面注册也行。

友盟错误统计上传冲突
集成了友盟错误统计,如果注册的位置不当会发现打印的信息被拦截或者无信息输出.那么该如何解决呢。

1.关闭友盟错误统计

MobclickAgent.setCatchUncaughtExceptions(false);

2.在初始化友盟前注册(App)

总结
以上模式推荐在开发中使用。
在这里插入图片描述

Android开发:UncaughtExceptionHandler捕获全局异常 # 前言 应用当前界面崩溃停留在上个页面,看不到崩溃日志? Android的logcat控制台,看不到应用崩溃的日志? 如何拦截到未捕获的异常,并打印出来,帮助我们快速定位到代码问题呢? 最近同事跟我反应说开发的应用run的时候发生了崩溃,但是在logcat中,只看到了应用重启的日志,类似下面这样的: # 寻找方案 那么怎样查看错误日志,快速定位问题的原因呢? 1,由于崩溃的概率... 阅读详情

相关推荐

android 中处理崩溃异常并重启程序出现页面重叠的问题

android开发中经常会遇到程序异常,而已常常会遇到一出现异常APP就自动重启了,而已如果你的项目中应用到Fragment的切换的话,会出行页面重叠的现象。今天为了解决这个问题看了不少大牛的博客。最后终于把问题解决了,下面就把解决的方法做一个介绍。 总的问题解决定向是处理崩溃异常的方法。先说说我前面尝试的不成功的方法。 一、写一个类实现UncaughtExceptionHandler 接口pu

jiang547860818的博客 4374

Android使用Thread.UncaughtExceptionHandler捕获/分析异常信息

Thread中提供了一个UncaughtExceptionHandler接口能够获取应用的crash信息 该方法设置系统的默认异常处理器,发生crash的时候,系统就会回调UncaughtExceptionHandler的uncaughtException(Thread t, Throwable e) 我们可以在uncaughtException方法中获取到crash信息,也可以选择把异常信息存储到本地以及上传到服务器提供给开发人员分析。 public class CrashHandler implemen

旧时光っ 3374

android全局异常捕获器UncaughtExceptionHandler的基本使用

——再过十天就可以去找工作了,最近为了简历好看点,复习下我的Cocos和QT啊.不知道以后用得到用不到啊,每个礼拜坚持写一篇吧,昨天晚上把淘宝物流信息的控件做出来了一半,实在没什么时间,下个礼拜看看能不能发.

z8z87878的博客 5560

程序的崩溃处理UncaughtExceptionHandler

UncaughtExceptionHandler

奋斗、 1万+

学习笔记之Android利用UncaughtExceptionHandler捕获全局异常

一、概述 现如今,Android手机越发的普及,手机的品牌与型号五花八门、Android版本的不同,在开发过程中运行良好的app到了发布上线后安装到某款手机上说不定就出现异常崩溃的现象,开发者不可能在所有的设备逐个调试,所以在apk发布上线后,如果出现了崩溃现象,应及时捕获该设备导致崩溃的日志信息,这对于版本维护bug修复帮助极大,那么如何在app出现crash的情况下捕获设备的参数和较详细的异

星湖小筑的博客 1350

Android安全检测报告--全局异常捕获 问题处理

创建一个类实现接口,重写方法,在该方法中处理未捕获的异常。// 系统默认的UncaughtException处理类// CrashHandler实例// 程序的Context对象app开发,使用全局异常捕获UncaughtExceptionHandler类,当程序发生未知异常时,由该类来处理,并记录发送错误报告,如何设计及完美实现在 Android 应用开发中,使用类进行全局异常捕获并记录、发送错误报告是一个非常实用的功能。

白高林的专栏 1314

Android统一异常处理,Android全局异常处理UncaughtExceptionHandler

开发中有些地方未注意可能造成异常抛出未能caught到,然后弹出系统对话框强制退出。这种交互不好,而且开发者也不能及时获取到底哪里出问题,当然可以接入第三方Crash分析平台比如Bugly、instabug,其实也可以自己很简单的实现全局异常处理。未捕获异常大多发生在在多线程环境中,子线程抛出的异常是不能用主线程中try….catch捕获。可以给线程设置UncaughtExceptionHandl...

weixin_36296325的博客 740

X3850x6 6241 fireware固件升级

登录联想https://datacentersupport.lenovo.com/cn/zc网站,选择system x,x3850 x6,type选择6241 选择驱动及应用程序,BIOS/UEFI 选择lnvgy_fw_uefi_a9e156a-4.90_anyos_32-64.uxz 文件,点击下载 选择IMM2, 下载lnvgy_fw_imm2_tcoo58b-5.80_anyos_noarch.uxz ps:3837和3839会跳转到ibm网站下载 笔记本直连.

zds00virtue的博客 5457

android UncaughtExceptionHandler全局异常处理

在编写android客户端应用时,总会由于各种各样的原因,导致我们的程序异常退出,

qndroid的专栏 1086

Linux 桌面虚拟化技术 KVM

Linux 桌面虚拟化技术 KVM

高飞的博客 36万+

深入解析MATLAB四旋翼仿真案例asbQuadcopter的核心模块与优化技巧

本文深入解析了MATLAB/Simulink中的四旋翼无人机官方案例asbQuadcopter,详细拆解了其指令、传感器、控制器、本体与环境等核心模块的工作原理。重点探讨了经典的PID双环控制结构、传感器噪声模拟、模型替换方法以及系统化的PID参数调优技巧,旨在帮助用户从“开箱即用”过渡到深度定制与优化,构建更精准的仿真模型。

weixin_29171087的博客 361

Android异常处理——UncaughtExceptionHandler捕获全局异常

Android系统的“程序异常退出”,给应用的用户体验造成不良影响。为了捕获应用运行时异常并给出友好提示,便可继承UncaughtExceptionHandler类来处理。通过Thread.setDefaultUncaughtExceptionHandler()方法将异常处理类设置到线程上即可。    1、异常处理类,代码如下: public class CrashHandler implem

贵宝的博客 3688

国内合规开通ChatGPT Plus实操指南:银行卡绑卡与支付全解析

ChatGPT Plus 是 OpenAI 官方推出的高级订阅服务,基于 GPT-4o 多模态大模型提供语音交互、图像理解与长上下文处理能力。其核心使用前提在于完成合规的国际支付绑定,而非网络接入方式。技术原理上,OpenAI 采用 Stripe 支付网关进行风控校验,重点匹配银行跨境权限、卡片类型(仅支持 Visa/Mastercard/Amex 信用卡)、BIN 号段及地理位置一致性。该机制决定了95%的绑卡失败源于银行端配置缺失或卡片不兼容,而非网络问题。实际应用中,PayPal 作为中间支付层可显著

chuannaoxuan4674的博客 1980

android 处理程序全局异常和错误,UncaughtExceptionHandler

定义一个MyApplication在AndroidManifest中定义这个Application           android:name="com.sxy.main.activity.MyApplication"         android:allowBackup="true"         android:icon="@drawable/logo_new"

xiaoqiang_0719的博客 1677

国科大学习资料--机器学习方法与应用(叶齐祥)-期末考试题整理

国科大学习资料–机器学习方法与应用-期末考试题整理 ============================================================================================================================================================================================ =======================================

无名何许人的博客 2852

使用手机录制rosbag包

使用手机作为便携式数据采集设备来录制rosbag。

weixin_38582851的博客 615

Android自定义异常处理 (捕获全局异常UncaughtExceptionHandler)

大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试,所以在程序发布出去之后,如果出现了崩溃现象,开发者应该及时获取在该设备上导致崩溃的信息,这对于下一个版本的bug修复帮助极大,所以今天就来介绍一下如何在程序崩溃的情况下收集相关的设备参数信息和具体的异常信息,并发送这些信息到服务器供开...

梵韵 4740

基于51单片机的智能台灯设计:嵌入式程序设计实现

随着智能家居和物联网的快速发展,智能台灯作为一种典型的智能家居产品,已成为现代家庭中不可或缺的设备。传统的台灯只能提供简单的照明功能,而智能台灯不仅具备基础的照明功能,还能根据用户的需求进行自动调节,比如自动调节亮度、色温,甚至具备定时开关、远程控制等智能功能。本文将介绍如何基于51单片机设计一款智能台灯。我们将涉及硬件设计、嵌入式系统架构、传感器选择、调光控制、语音识别、远程控制等方面,详细阐述如何实现这些功能,并给出相关的代码和实现步骤。

2201_76125393的博客 836

Android全局try,Android全局异常捕获

稳定性测试是保障客户端稳定性的一种手段,致力于提前发现问题,收集更多异常信息,复现线上闪退。当Android客户端发生闪退时,是如何捕获到闪退信息的呢?首先,需要了解一下Java中的异常.Java的异常Java语言在设计之初就提供了相对完美的异常处理机制,所有的异常类是从java.lang,Exception类继承的子类,Exception类是Throwable类的子类,除了Exception,T...

weixin_39774219的博客 712

系统分析师论文范文(三)微服务

摘要(300字) 2024年4月,我作为系统分析师参与某省三甲医院云影像系统建设项目,负责系统分析与设计工作。该项目旨在响应国家"无胶片化"医疗政策,解决传统影像系统数据孤岛、调阅效率低等问题。系统基于DICOM 3.0和HL7国际标准,采用B/S架构与Spring Cloud Alibaba微服务技术栈,包含影像采集、智能分析、数据安全等核心模块,实现全院影像资源的云端统一管理与多端调阅。在架构设计上,通过微服务拆分、分布式事务控制及多层次安全防护机制,保障了系统的高可用性与数据一致性。系统于2024年1

echo的博客 221

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ANDROID全局异常处理

在做android项目开发时,大家都知道如果程序出错了,会弹出来一个强制退出的弹出框,这个本身没什么问题,但是这个UI实在是太丑了,别说用户接受不了,就连我们自己本身可能都接受不了。虽然我们在发布程序时总会经过仔细的测试,但是难免会碰到预料不到的错误。 今天就来自定义一个程序出错时的处理,类似iphone的闪退。(虽然闪退也是用户不愿意看到的,但是在用户体验上明显比那个原生的弹窗好多了)

androidstar_cn的博客 1020

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

android中捕获全局异常

前言 大家都知道,安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试。所以在程序发布出去之后,如果出现了崩溃现象,开发者应该及时获取在该设备上导致崩溃的信息,这对于下一个版本的bug修复帮助极大,所以今天就来介绍一下如何在程序崩溃的情况下收集相关的设备参数信息和具体的异常信息,并发送这些信息到服务器

Zzq_Big_Cow的博客 1056

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

详解Android全局异常的捕获处理

这篇文章主要为大家介绍了Android全局异常的捕获处理,为什么要进行捕获处理,如何进行捕获处理,想要了解的朋友可以参考一下 在Android开发中在所难免的会出现程序crash,俗称崩溃。用户的随意性访问出现测试时未知的Bug导致我们的程序crash,此时我们是无法直接获取的错误log的,也就无法修复Bug。这就会极大的影响用户体验,此时我们需要注册一个功能来捕获全局的异常信息,当程序出现cr

狂奔的奶牛 2433

java 中的全局异常捕获机制

我们讲这个全局异常捕获器UncaughtExceptionHandler之前,我们先来想个问题,先看下下面这段代码和一张图片 public class SecnodActivity extends BaseActivity{ @Override protected void onCreate(@Nullable Bundle savedInstanceState) { ...

z_x_Qiang的博客 4042

安卓全局异常捕获,异常崩溃处理

开发安卓的小伙伴都遇到过APP突然崩溃,无响应的情况.如果发生在自己手中,那么还可以通过IDE查看错误日志,但是实际都是发生在用户手中,那么这个时候产生崩溃,无响应ANR异常就很麻烦.无从下手.因此,需要全局异常捕获.也就是对未知异常,程序员没有处理的异常进行处理,记录等便于分析查找原因. 首先,新建一个类 MyCatchException.Java package com.linfeng...

weixin_30364147的博客 294

android捕获全局异常,并对异常做出处理

<br /><br />在做项目时,经常会把错误利用异常抛出去,这样在开发时就可以通过手机抛的异常排查错误,很方便。但是当程序开发完毕,版本稳定,需要上线时,为了避免抛出异常影响用户感受,可以捕获全局异常,对异常做出处理。<br />具体的实方法如下:<br />利用Thread.UncaughtExceptionHandler 获取异常,并对异常做出处理:<br />public class MyUncaughtExceptionHandler implements <br />        Threa

5260
上一篇: Android 检测微信或者微博是否安装
下一篇: Android ProgressBar自定义
西瓜cc
博客等级 码龄12年 29粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值