c# - 来自 WPF 应用程序的异常报告

标签 c# wpf error-handling error-reporting

假设我的应用程序碰巧有一个未处理的异常,或者它由于某种原因崩溃了。 有什么方法可以让我在应用程序崩溃时捕获输出并显示错误报告对话框。

我在想的是在后台运行一个小程序,它唯一的工作就是监听主应用程序的异常退出,然后显示“报告”对话框,用户可以在其中选择通过电子邮件将输出结果发送给我的错误。

不太确定如何实现,或者这是否是正确的方法。

报告错误消息是一件容易的事,但我不知道如何捕获未处理异常的输出或获取退出代码(我假设程序在崩溃时会给出 0 以外的退出代码).

向正确的方向插入会很棒。

最佳答案

您最好的机会是在应用程序内部。有两个钩子(Hook):

“包罗万象”的正确位置取决于您的应用程序语义,并且在不知道您的应用程序的情况下很难说出您应该把它放在哪里。应用程序还需要设置 Application.SetUnhandledExceptionMode .

拥有外部看门狗的用处不大,因为它无法提供应用程序崩溃原因的任何有意义的信息。当它检测到“意外”退出时(它怎么知道是“意外”?)已经太晚了,无法收集任何有用的信息。使用内部处理程序,您可以收集异常和堆栈并将它们提交给分析服务,如 bugcollect.com然后您将在了解现在发生了什么发生的频率以及哪些部署受到影响(哪里它发生了)。还有其他类似的服务,如 exceptioneer.comWindows Error Reporting (这需要您的代码由 Verisign 等受信任的权威证书签名)。依靠服务来收集事件远比发送邮件好得多,您不想一觉醒来发现收件箱中有 2000 封事件电子邮件并开始筛选它们以了解发生了什么。。 p>

最后的世界:不要重新发明轮子:已经有很多框架可以收集和记录异常,比如 log4netelmah .

关于c# - 来自 WPF 应用程序的异常报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6038572/

相关文章:

c# - 如何在 PropertyGrid 自定义集合编辑器中自定义 "Add"按钮下拉列表中的名称

c# - 阅读 app.config 很昂贵吗?

c# - 接收传入流时要使用的Byte []大小是多少

c# - 如何从 ResourceDictionary 设置 Button.Command?

c# - 好的示例.Net Windows服务可报告错误

java - 如何更好地创建复杂类的实例?

c# - Wpf 弹出窗口放置

wpf - 在 Wpf 中创建垂直菜单

objective-c - 在 Objective-C 中维护表示不变量

python - "OSError: telling position disabled by next() call"如何解决