【问题标题】:How can I find out the result of sending a MadExcept bug report from a Delphi app如何找出从 Delphi 应用程序发送 MadExcept 错误报告的结果
【发布时间】:2011-02-24 03:43:06
【问题描述】:

我找不到任何方法来确定是否可以从我的 D2006 应用程序发送错误报告。如果 MadExcept 可以提供某种类型的返回码,我或许可以为用户提供一些关于可能出现问题的指导。

【问题讨论】:

  • 如果您的代码可以对捕获异常的 MadExcept 做出反应,则您的应用应该自己捕获并处理异常。 MadExcept 用于追踪您不知道因此无法处理的问题。 IOW,不需要返回码;如果您有机会检查,您应该已经捕获并处理了异常本身。
  • 具有结果状态信息,例如“无法联系 SMTP 服务器”、“无法中继”或(如果是 Web 服务器上的 POST),“HTTP 错误 503”可以显示到用户或登录会很高兴。当然这不能在发生异常的位置使用。但它通常会被传递给事件处理程序(如 OnAfterSendReport),用户代码可以在其中决定如何处理信息。根据文档,带有 eaContinueApplication 的 RegisterExceptionHandler 可能是一种方法(在 madExcept 的下一个版本中)
  • @Ken,我并不是真的在谈论我在我的程序中处理异常。我假设 ME 已经捕获了异常并向用户展示了一个对话框,其中一个按钮会在该对话框上发送错误报告。我想要的是某种方式知道它没有发送,以及为什么它没有发送,所以我可以指导用户保存错误报告并手动发送电子邮件。
  • 您可以将 ME 配置为自动保存错误报告(通过附加到现有报告或截断并开始新报告)以及提供发送它的机会。因此,即使电子邮件失败,您也有一份报告的副本。
  • @Ken。当然,我可以让我自动保存错误报告(当我捕获异常时我可以自己保存它),但我只是认为能够弹出一个对话框说“我无法发送错误报告 - 你介意去 并将 发送到 bugreports@mydomain.com"

标签: delphi exception-handling return-code madexcept bug-reporting


【解决方案1】:

问题在于 MadExcept 无法合理地确定这一点。在 Madexcept 发送电子邮件后,有一连串的事情可能会出错。如果 MadExcept 无法生成报告或发送电子邮件时出现问题,您将收到异常。

  • 电子邮件客户端收到消息,用户没有点击发送
  • 电子邮件客户端损坏或配置错误
  • SMTP 主机损坏、停机或丢失
  • 您的客户在您订阅的 RBL 上(可能在不知不觉中)
  • 您客户的域在 RBL 上或以其他方式被阻止
  • 您的邮件系统出现故障,您丢失了该电子邮件

您可以从 MadExcept 中得到的最好的结果是“没有抛出异常,发送可能正常”。

【讨论】:

  • 好的,当你说“没有抛出异常”时,我该如何确定?
  • 据我回忆,如果 MadExcept 抛出异常,您的应用程序将关闭。但这是 Madshi 论坛/文档比 SO 更好的东西。我建议询问forum.madshi.net
【解决方案2】:

也许不是一个完整的解决方案,但有用的信息:如果错误报告是使用 HTTP POST 请求发送到 Web 服务器,madExcept 可以检测响应是否包含 HTTP 重定向标头,在这种情况下,madExcept 将启动默认 Web 浏览器并加载重定向中给出的 URL。

因此用户可以立即看到报告已被接收和存储。

网络服务器甚至可以分析错误报告并提供附加信息,例如“这个错误是已知的,我们有一个可以修复它的应用程序更新,你可以在这里下载”。 (为此,我编写了一个 Web 应用程序 madxnet - 它仍可用于测试)。

【讨论】:

  • 有趣的网络应用。您愿意分享代码吗?如果你喜欢没有分析部分(我可以想象那里会有一些专有的东西)?
  • @Marjan 这不是 Delphi 而是 Java 代码(在 Google App Engine 上运行的一个简单的 Web 应用程序),该项目目前处于非活动状态,直到我找到一些赞助商 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-24
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
相关资源
最近更新 更多