
我的问题是如何在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
总结以上是内存溢出为你收集整理的android-如何捕获未处理的错误并将其进一步传递全部内容,希望文章能够帮你解决android-如何捕获未处理的错误并将其进一步传递所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)