如何将Android应用程序日志发送到远程服务器?
在我的应用程序中,我想在遇到崩溃的情况下将日志发送到远程服务器。 我添加了try-catch块并且在catch中我将日志发送到服务器。 我想知道我应该抓住的所有例外情况。 每次崩溃都需要日志,以便我可以修复它。 抓住所有例外情况会是一个好习惯吗?
提前致谢。
以下是我从其他优秀答案中汲取的建议总结清单:
-
捕获所有未处理的exception 。
-
创建一个实现
java.lang.Thread.UncaughtExceptionHandler
的ExceptionHandler
。 您可以使用此类来自定义和记录错误。 -
把这个:
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler(this));
在每个Activity
类的OnCreate()
方法(在super()
)。 -
有关详细信息,请参阅Androidexception处理最佳实践中的这个优秀答案。
-
-
将try / catch包含在外部/外部运行的所有代码中。 (例如 – 使用第三方组件的代码)
-
围绕您知道的所有代码附加try / catch,在某些条件下可能会失败
- 没有互联网连接时
- 在I / O操作期间
- 当有可能疯狂的用户输入
- 当有可能被零分割时
-
在顶层使用try / catch,因为所有exception都会冒泡到顶层。 因此,在内部函数中,如果需要,可以考虑使用
throw
exception。 然后,在顶层, 捕获特定的exception并正确地在catch块中对exception类型进行排序 。 (从这个伟大的答案中提到: 如何使用try catch进行exception处理是最佳实践 -
对于UI,即使发生错误(如果错误是由于没有互联网连接),您也应该通过提供应用程序的“有限function”版本来提供“持续可用性”。
-
向用户报告的过度错误并不是一个好主意。
-
持久性错误消息很糟糕。 通过消息通知用户并让用户关闭/删除它。
参考1 | 参考2 | 参考3 | 进一步阅读1 | 进一步阅读2 | 进一步阅读3
要使Android库远程记录未处理的exception,您可以看一下: android-remote-stacktrace 。
- 下载.jar文件。
- 将其添加到Java Build路径。
-
添加INTERNET权限:uses-permission android:name =“android.permission.INTERNET”
-
在您的活动或服务的
OnCreate
方法中,输入’ExceptionHandler.register(this,“ http://your.domain/path ”);’ - 在您的服务器上,放置此PHP文件 ,您可以编辑该文件以扩展function。