首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中崩溃报告的策略/技术

Java中崩溃报告的策略/技术
EN

Stack Overflow用户
提问于 2009-08-21 16:03:56
回答 6查看 3.6K关注 0票数 4

我正在开发一个新的Java桌面应用程序,并希望包括一个崩溃报告功能-你知道的一种东西-程序崩溃,弹出框要求用户单击of发送它,等等。

我对如何将错误发送回我们的服务器很满意--可能是通过一个简单的web服务。我更不确定的是,捕获故障的机制应该如何实现?我欢迎任何已经实现了类似功能的人的建议。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-08-21 16:56:42

我看到了三种情况:

  1. 灾难。JVM本身不是死了就是快死了。您不能假设您的任何代码都能够工作-例如,您不能分配任何内存。因此,在这种情况下,您不能合理地希望能够发送任何诊断信息。您所能期望的最好结果就是获得一些诊断信息,例如在已死程序的灰尘中留下的核心转储。

在这种情况下,您可以在新的运行启动时查找此类碎片,并建议用户收集这些碎片,或者更努力地尝试自己组装诊断包。

  1. 低级应用程序代码不会捕获异常,可能是RunTime异常,如NullPointer异常。在这种情况下,你可以在你的main中(假设你有一个),你可以捕获异常,并希望你的Crash Reporter代码能够工作。将异常传递给崩溃报告程序,它是堆栈跟踪。
  2. 你的低级代码捕获了一些非常不健康的东西。不足以终止进程,但值得报告。在这里,您不仅可以获得异常,还可以获得其他上下文信息。我们有更多信息要发送给撞车记者。
票数 2
EN

Stack Overflow用户

发布于 2009-08-22 00:49:31

有一个命令行选项,您可以为JVM提供一个命令行选项,该选项将在JVM使用内存转储崩溃后运行批处理文件。您所要做的就是创建一个执行错误报告的外部程序,然后使用JVM选项通过您创建的实用程序在电子邮件中发送核心转储。

代码语言:javascript
复制
-XX:-HeapDumpOnOutOfMemoryError -XX:OnError="<cmd args>;<cmd args>"
票数 7
EN

Stack Overflow用户

发布于 2009-08-21 23:22:40

使用Thread.setUncaughtExceptionHandler和静态Thread.setDefaultUncaughtExceptionHandler (尝试)向日志记录系统报告异常。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1312851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档