- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在我的应用程序中,我想在崩溃的情况下将日志发送到远程服务器。我添加了 try-catch block ,并在 catch 中将日志发送到服务器。我想知道我应该捕获哪些异常。我需要日志以防每次崩溃,以便我可以修复它。捕获所有异常是一个好习惯吗?
提前致谢。
最佳答案
以下是我从其他优秀答案中挑选出的建议摘要列表:
捕获所有未处理的异常。
创建一个实现 java.lang.Thread.UncaughtExceptionHandler
的 ExceptionHandler
。您可以使用此类来自定义和记录错误。
把这个:Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler(this));
放在 OnCreate()
方法里面(在 super()
之后) >) 您的每个 Activity
类。
详情请引用Android exception handling best practice的精彩回答.
将 try/catch 包含在外部/从外部运行的所有代码中。 (例如 - 使用第 3 方组件的代码)
在您知道的所有代码周围附上 try/catch,在某些情况下可能会失败
在顶层使用 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 .
添加 INTERNET 权限:uses-permission android:name="android.permission.INTERNET"
在您的 Activity 或服务的 OnCreate
方法中,放入“ExceptionHandler.register(this, "http://your.domain/path ");”
关于java - 如何将android应用程序日志发送到远程服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31421865/
我是一名优秀的程序员,十分优秀!