java - 如何将android应用程序日志发送到远程服务器?

标签 java android exception-handling

在我的应用程序中,我想在崩溃的情况下将日志发送到远程服务器。我添加了 try-catch block ,并在 catch 中将日志发送到服务器。我想知道我应该捕获哪些异常。我需要日志以防每次崩溃,以便我可以修复它。捕获所有异常是一个好习惯吗?

提前致谢。

最佳答案

以下是我从其他优秀答案中挑选出的建议摘要列表:

  • 捕获所有未处理的异常

    1. 创建一个实现 java.lang.Thread.UncaughtExceptionHandlerExceptionHandler。您可以使用此类来自定义和记录错误。

    2. 把这个:Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler(this)); 放在 OnCreate() 方法里面(在 super() 之后) >) 您的每个 Activity 类。

    3. 详情请引用Android exception handling best practice的精彩回答.

  • 将 try/catch 包含在外部/从外部运行的所有代码中。 (例如 - 使用第 3 方组件的代码)

  • 在您知道的所有代码周围附上 try/catch,在某些情况下可能会失败

    1. 没有互联网连接时
    2. 在 I/O 操作期间
    3. 当可能出现疯狂的用户输入时
    4. 当存在被零除的可能性时
  • 在顶层使用 try/catch 因为所有的异常都会冒泡到顶层。所以,在内部函数中,如果需要,可以考虑使用throw异常。然后,在顶层,捕获特定异常并在 catch block 中正确对异常类型进行排序。 (从这个很棒的答案中引用:How using try catch for exception handling is best practice

  • 对于 UI,即使出现错误(例如,如果错误是由于没有互联网连接),您也应该通过提供“功能有限”版本的应用来提供“持续可用性”。

  • 过于急于向用户报告错误不是一个好主意。

  • 持续的错误消息是不好的。用消息通知用户并让用户关闭/删除它。

Reference 1 | Reference 2 | Reference 3 | Further Reading 1 | Further Reading 2 | Further Reading 3


对于远程记录未处理异常的Android库,你可以看看这个:android-remote-stacktrace .

  • 下载.jar文件。
  • 将其添加到 Java 构建路径。
  • 添加 INTERNET 权限:uses-permission android:name="android.permission.INTERNET"

  • 在您的 Activity 或服务的 OnCreate 方法中,放入“ExceptionHandler.register(this, "http://your.domain/path ");”

  • 在你的服务器上,放置this PHP file ,您可以对其进行编辑以扩展功能。

关于java - 如何将android应用程序日志发送到远程服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31421865/

相关文章:

java - 当我们启动 android studio 创建新项目时,为什么它会自动创建 MainActivity

java - 更高级别的错误处理

.net - ThreadAbortException内部实现

java - NoClassDefFoundError 使用来自 Java 的 Scala 类

java - 如何打包和链接 OpenCV 二进制文件和适用于 Android Studio 的 OpenCV Java SDK?

java - 算法无法对最终数组值执行

android - dp是基于屏幕的物理尺寸吗? (dp = 1/160 英寸)

android - 尝试使用 JUnit 测试库的考验

android - 在所有 Activity 中播放 MediaPlayer

java - 捕获java中所有抛出的异常?