我的问题是如何在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
附加到应用程序线程的实例。
如何使应用程序崩溃?
使用这个线程
它不会使应用程序崩溃,而是会导致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
用于捕获应用程序中的所有错误。
只需按Answers
标签过滤logcat 。或通过System.exit
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句