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

亚当·斯蒂尔

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

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

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

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

        }
    });

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

throw new RuntimeException(ex);

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

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

谢尔盖·舒斯蒂科夫(Sergey Shustikov)

在较低级别UncaughtExceptionHandler上,该机制可以捕获所有应用程序错误,以防万一UncaughtExceptionHandler附加到应用程序线程的实例

如何使应用程序崩溃?

使用这个线程

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

发生这种情况是因为您抛出了Exception,然后进入了uncaughtException方法,然后再次抛出了异常。所以你有一个周期。

但是,如何进一步通过呢?

我想您需要将异常数据保存到某些存储区-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类。

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

Fabric还UncaughtExceptionHandler用于捕获应用程序中的所有错误。

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我如何进一步理解为什么Go会以这种方式处理错误?

HTTP发布到Web API 2-收到选项请求,未处理进一步的请求

如何匹配字符串并进行进一步处理?

设置临时变量并将其在pug模板中进一步使用

使用Maven部署Spring-Boot项目,并将其进一步导入其他项目

如何捕获将选择器传递到文档中不存在的jQuery()的情况,以阻止进一步的可能的错误或遗漏?

如何获得符号表达式的值以进行进一步处理

如何进一步优化Eratosthenes筛

如何阻止剧本进一步运行?

如何从网络摄像头捕获单个图像并在OpenCV中进一步处理?

尝试确定图像中边界框的坐标并将其进一步裁剪

如何删除与熊猫合并的Excel单元格以进行进一步处理?

如何进一步调试?

如何使`xargs`忽略孩子的出口并继续进行进一步处理

如何用“ ...”传递一些(但不是全部)进一步的参数

如何返回COUNT(*)并将其存储在变量中以在VBscript中进一步使用

如何存储MySQLi bind_result值以进行进一步处理?

如果捕获到异常,如何跳过进一步执行

如何将关联数组从 PHP 传递到 HTML 以进行进一步处理

使用 python 修改字典(并将其保存以供进一步会话)

如何使用python正则表达式分离每个爆炸结果并将其存储在列表中以供进一步分析

无需下载视频即可捕获 YouTube 视频以进行进一步处理

如何提取远程 VM 的操作系统版本并将其设置为远程 VM 上的环境变量,并在expect 脚本中进一步使用?

如何捕获文件头,然后对原始文件进行进一步的文本处理?

上传到 Shiny 并将其分配给环境以供进一步使用

tkinter - 如果错误未修复,如何不处理进一步的代码 - messagebox.showerror()

如何使用 fetch 将 URL 进一步传递到响应中?

D3 如何进一步传递 Promise.all 数据?

如何进一步停止处理请求?