Ada*_*yrc 5 android exception-handling crashlytics twitter-fabric crashlytics-android
我的问题是如何在 Android 应用程序中捕获未处理的错误并进一步传递它们,以便它确实会使应用程序崩溃。
我正在为 Android 创建 SDK,我仍然希望开发人员处理他们的错误,但我也想了解我的崩溃情况。
我知道要捕捉错误,我可以使用:
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
}
});
Run Code Online (Sandbox Code Playgroud)
但是如何进一步传递呢?如何使应用程序崩溃?如果我使用:
throw new RuntimeException(ex);
Run Code Online (Sandbox Code Playgroud)
它不会使应用程序崩溃,而是会导致ANR错误。
第二个问题是Fabric (Crashlytics)库是如何工作的?请注意,如果 Fabric 也存在于应用程序中,我也不想破坏它的工作流程。
在低级别UncaughtExceptionHandler是捕获所有应用程序错误的机制,以防实例UncaughtExceptionHandler附加到应用程序线程。
如何使应用程序崩溃?
使用这个线程
它不会导致应用程序崩溃,而是导致 ANR 错误。
发生这种情况是因为您抛出异常并进入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();
}
});
Run Code Online (Sandbox Code Playgroud)
为了最好的情况,您需要将 Thread.setDefaultUncaughtExceptionHandler(...) 放入您的 Application 类中。
第二个问题是Fabric(Crashlytics)库是如何工作的?请注意,如果 Fabric 也存在于应用程序中,我也不想破坏它的工作流程。
Fabric 还用于UncaughtExceptionHandler捕获应用程序中的所有错误。
只需按标签过滤 logcat 即可Answers。或者通过System.exit
| 归档时间: |
|
| 查看次数: |
1177 次 |
| 最近记录: |