Wil*_*iam 4 java crash error-handling
我正在开发一个新的Java桌面应用程序,并希望包含一个崩溃报告工具 - 你知道那种东西 - 程序崩溃,弹出框要求用户点击好发送它等等.
我很清楚如何将错误发送回我们的服务器 - 可能是通过一个简单的Web服务.我更不确定的是如何实现捕获故障的机制?我会欢迎任何已经实施过类似建议的人的建议.
有一个命令行选项,您可以为JVM在JVM与内存转储崩溃后运行批处理文件.您所要做的就是创建一个执行错误报告的外部程序,然后使用JVM选项使用您创建的实用程序在电子邮件中发送核心转储.
-XX:-HeapDumpOnOutOfMemoryError -XX:OnError="<cmd args>;<cmd args>"
Run Code Online (Sandbox Code Playgroud)
小智 5
使用Thread.setUncaughtExceptionHandler和静态Thread.setDefaultUncaughtExceptionHandler来(尝试)向您的日志记录系统报告异常.
我看到三种情况:
灾难。JVM 本身要么已死,要么正在消亡。您不能假设您的任何代码都能够工作 - 例如您不能分配任何内存。因此,在这种情况下,您不能合理地希望能够发送任何诊断信息。您所能期望的最好的结果就是在死程序的灰烬中留下一些诊断信息,例如核心转储。
在这种情况下,您可以在新运行启动时查找此类碎片,并建议用户收集它,或者更努力地尝试自己组装诊断包。
低级应用程序代码不会捕获异常,可能是运行时异常,例如 NullPointer 异常。在这种情况下,您可以在主程序中(假设您有一个)捕获异常,并希望您的崩溃报告器代码能够正常工作。将异常及其堆栈跟踪传递给崩溃报告器。
你的低级代码捕获了一些非常不健康的东西。不足以终止进程,但值得报告。在这里,您不仅可以获得例外情况,还可以获得其他上下文信息。我们还有更多信息要发送给崩溃报告者。
| 归档时间: |
|
| 查看次数: |
3122 次 |
| 最近记录: |