ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

android-如何捕获未处理的错误并将其进一步传递

2019-11-19 04:26:33  阅读:244  来源: 互联网

标签:crashlytics-android twitter-fabric crashlytics exception-handling android


我的问题是如何在Android应用程序中捕获未处理的错误,并将其进一步传递给其他应用程序,以便确实使应用程序崩溃.

我正在为Android创建SDK,但我仍然希望开发人员处理他们的错误,但我也想了解我的崩溃情况.

我知道要捕获错误,我可以使用:

        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
        @Override
        public void uncaughtException(Thread thread, Throwable ex) {

        }
    });

但是,如何进一步通过呢?如何使应用程序崩溃?如果我使用:

throw new RuntimeException(ex);

它不会使应用程序崩溃,而是会导致ANR错误.

第二个问题是Fabric(Crashlytics)库如何工作?
请记住,如果应用程序中也存在Fabric的工作流,我也不想破坏它.

解决方法:

在较低级别上,UncaughtExceptionHandler是一种机制,用于在UncaughtExceptionHandler实例附加到应用程序线程的情况下捕获所有应用程序错误.

How to crash application?

使用这个thread

It won’t crash application but rather cause ANR error.

发生这种情况是因为您抛出了Exception,并且进入了uncaughtException方法,在该方法中再次抛出了异常.所以你有一个周期.

But how to pass it futher?

我想您需要将异常数据保存到某些存储区-SD卡,将崩溃信息发送到电子邮件等.

在这种情况下,您需要在uncaughtException方法中实现逻辑.
您无需进一步传递它!

Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
        @Override
        public void uncaughtException(Thread thread, Throwable ex) {
               // put your save logic here
               // save to file, send to email, etc.
               // Also you can get information about throwed exception
               // for example : ex.getMessage();
        }
    });

最好将Thread.setDefaultUncaughtExceptionHandler(…)放入Application类.

The second question is how does Fabric (Crashlytics) library work? Mind that I also don’t want to spoil workflow of Fabric if it’s also present in the application.

Fabric还使用UncaughtExceptionHandler来捕获应用程序中的所有错误.

如果您需要在logcat中看到错误

只需通过Answers标签过滤logcat.或通过System.exit

标签:crashlytics-android,twitter-fabric,crashlytics,exception-handling,android
来源: https://codeday.me/bug/20191119/2033445.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有