WPF 应用程序的异常报告

2024-02-17

在未处理的异常期间,是否有某种方法可以捕获输出并在应用程序崩溃时显示错误报告对话框?


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

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

报告错误消息将是一项简单的任务,但我不知道如何捕获未处理异常的输出或获取退出代码(我假设程序崩溃时会给出除 0 之外的退出代码)。


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

  • AppDomain.UnhandledException http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx是终极的“包罗万象”
  • Application.ThreadException http://msdn.microsoft.com/en-us/library/system.windows.forms.application.threadexception.aspx是针对 Forms 线程中发生的异常的 UI 特定包罗万象

“包罗万象”的正确位置取决于您的应用程序语义,并且在不了解您的应用程序的情况下很难说出应该将其放在哪里。应用程序还需要设置Application.SetUnhandledExceptionMode http://msdn.microsoft.com/en-us/library/system.windows.forms.application.setunhandledexceptionmode.aspx.

拥有外部看门狗的用处不大,因为它无法提供任何有意义的信息,说明应用程序为何崩溃。当它检测到“意外”退出时(它如何知道是“意外”?),已经太晚了,无法收集任何有用的信息。使用内部处理程序,您可以收集异常和堆栈并将它们提交给分析服务,例如bugcollect.com http://bugcollect.com/然后你现在就能理解了what发生了,而且还多常发生这种情况以及哪些部署受到影响(where它发生了)。还有其他类似的服务,例如异常者网站 http://exceptioneer.com/tour/ or the Windows 错误报告 http://msdn.microsoft.com/en-us/windows/hardware/gg487440(这要求您的代码由受信任的权威证书(如 Verisign)签名)。依靠服务收集事件远远优于发送邮件,您不想一觉醒来发现收件箱中有 2000 封事件电子邮件并开始筛选它们以了解情况what发生了。

最后一个世界:不要重新发明轮子:已经有很多框架来收集和记录异常,例如log4net http://logging.apache.org/log4net/index.html and elmah http://code.google.com/p/elmah/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF 应用程序的异常报告 的相关文章

  • 管理多个解决方案中存在的 C# 项目的 Nuget 包

    我现在正处于这样的阶段重构疯狂一个有很多的大项目遗留和不稳定的模块 我决定拆分解决方案目前 所有项目 大约有 20 个 而且由于下个月肯定会出现单元测试项目 还会有更多 链接在一起 使其更加独立和细化 通过这种方法 有一些模块 例如需要在多
  • ctypes.ArgumentError:不知道如何转换参数

    我在C库中定义了一个函数 如下所示 int Test char str1 int id1 char str2 float val float ls 我想在Python中使用它 所以我编写了以下Python代码 str1 a str2 b i
  • C# 从整数反序列化枚举

    是否可以从 C 中的 int 反序列化枚举 例如如果我有以下课程 class Employee public string Name get set public int EmployeeTypeID get set 我可以轻松地从 XML
  • C# 委托实例化与仅传递方法引用 [重复]

    这个问题在这里已经有答案了 我有一个简单的问题 与仅传递函数引用相比 实例化 C 委托有什么优势 我的意思是 Why do Thread t new Thread new ThreadStart SomeObject SomeMethod
  • 本机 C++ 通过代理 C++ 托管 dll 使用 C# dll

    这相当复杂 所以请耐心听我说 我有一个用本机 仅限 Win32 C 编码的第 3 方程序 目标 作为目标设计的一部分 它实现了一个 dll 插件系统 本机 DLL 当放置在程序的 ext 目录中时 由目标加载 然后 目标根据需要调用每个 D
  • 类型定义存在于两个库中

    我正在使用 NET 4 5 构建 ASP NET Web 窗体网站 错误 The type System ComponentModel DataAnnotations Schema ForeignKeyAttribute exists in
  • C# - 如何从 Steam 交易 API 获取图标的 URL(编码)

    以下是 API 为每个项目返回的 XML 部分
  • C# 中 value 为匿名类型的字典

    是否可以在 C 中创建一个System Collections Generic Dictionary
  • 驱蚊程序?

    不 我认真的 最近 我读到 当电脑的压电蜂鸣器以一定频率振动时 声音可以驱赶蚊子 真的吗 如何以编程方式访问 PC 蜂鸣器 而不是扬声器 最好使用 C 我不知道有没有蚊子 但我的头疼得要命 啊啊 using System Runtime I
  • DLR 返回类型

    我需要 DLR 的帮助 我正在实现 IDynamicMetaObjectProvider 和 DynamicMetaObject 但在获取预期返回类型时遇到一些问题 我在元对象中覆盖 BindInvokeMember 我可以看到所有参数类型
  • 给出对象的指针作为参数

    假设我有 void func foo obj 我有 foo object 我该如何制作object进入争论func 只需取消引用它即可 func object
  • 向量和常量

    考虑一下这个 void f vector
  • Parallel ForEach 的本地初始化如何工作?

    我不确定 Parallel ForEach 中本地 init 函数的使用 如 msdn 文章中所述 http msdn microsoft com en us library dd997393 aspx http msdn microsof
  • 如何在 ASP.NET MVC 中获取参数数组作为 GET / POST?

    如何最好地获取数组 item gt value 对作为 GET POST 参数 在 PHP 中 我可以这样做 网址 这得到的参数为 Array a gt Array one gt 100 two gt 200 有什么方法可以在 ASP NE
  • 等效

    这是否保证始终为真 std numeric limits
  • 我使用 tm/mktime 是否错误,如果没有,有解决方法吗?

    我认为下面的程序应该输出从公元 1 年到 1970 年每年第一天到 1970 年的秒数 前面是time t在编译它的系统上 CHAR BIT是一个宏 所以我认为你不能只是复制编译后的可执行文件并假设它是正确的 尽管实际上一切都使用 8 位c
  • 使用 c++20 范围删除最后一个元素的最佳方法是什么

    有没有比反转两次更好的方法来使用 c 20 范围删除容器中的最后一个元素 include
  • 如何在 OpenCV 中删除 mouseCallback

    在使用 C 的 OpenCV 中 有没有办法删除 mouseHandler int event int x int y int flags void param 通过函数添加到窗口 image window cv setMouseCallb
  • 为什么 istream/ostream 慢

    于 50 40http channel9 msdn com Events GoingNative 2013 Writing Quick Code in Cpp Quickly http channel9 msdn com Events Go
  • 实例着色器矩阵的设置

    我想绘制实例立方体 我可以打电话GL DrawArraysInstanced PrimitiveType Triangles 0 36 2 成功地 我的问题是所有立方体都绘制在相同的位置和相同的旋转 我如何为每个立方体单独更改它 要创建不同

随机推荐

  • 与 Enterprise Library 4.1 的单声道兼容性

    有人在 mono 中使用最新的企业库 4 1 吗 我使用 Mono 迁移分析器来分析我的 Web 应用程序 并意识到所有企业库 DLL 在 Mono 中都失败了 我需要知道企业库 4 1 与 Mono 2 4 不兼容是真的吗 我有这方面的更
  • C# - 如何解析文本文件(空格分隔的数字)?

    给定一个由空格分隔的数据文件 10 10 10 10 222 331 2 3 3 4 45 4 2 2 4 如何读取该文件并加载到数组中 谢谢 var fileContent File ReadAllText fileName var ar
  • Electron:如何安全地将全局变量注入BrowserWindow / BrowserView?

    我想使用 Electron 加载外部网页BrowserView 它的 API 几乎与BrowserWindow const currentWindow remote getCurrentWindow const view new remot
  • CSS 平铺背景图像的最佳尺寸

    人们经常说 当使用背景图像平铺网页背景时 尺寸较大的图像的性能会更好 因为它需要平铺的频率较低 一段时间以来 我一直将它们设为 8x8 像素 或 8 的倍数 但是是否有人有数据链接来证明在各种浏览器中都是这种情况 考虑渲染时间或页面渲染各个
  • ltrace()如何显示rand()

    当 ltrace 命中 rand 函数时 它会显示 4 个参数 如下所示 兰特 0 0x5649bd4e6010 0x7f0955490760 0x7f09551cf7b0 0x17382962 rand 不接受任何参数 ltrace 这里
  • C/C++向量到Numpy数组的快速转换

    我使用 SWIG 将一些 C 代码粘合到 Python 2 6 并且该粘合的一部分包括一段代码 该代码将大型数据字段 数百万个值 从 C 端转换为 Numpy 数组 我能想到的最好方法是为类实现一个迭代器 然后提供一个 Python 方法
  • Ember.js - 错误 - “断言失败:您必须在传递给‘push’的哈希中包含‘id’”

    通过使用 Express 编写的 REST API 将帖子 标题 文本 保存到 mongodb 数据库并刷新浏览器后 我收到此错误 我已经将主键设置为 id 并且一直在阅读有关可能规范化数据的内容 这是来自服务器的有效负载 数据库中只有 1
  • ESPN Cricinfo 有 API 吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Has espncricinfo com http espncricinfo com暴露API 我对实时
  • 如何通过反射从名称获取类型表示?

    有没有办法使用反射库 https golang org pkg reflect 在 Go 中从类型名称转到它的类型Type https golang org pkg reflect Type表示 我有一个库 用户需要为某些代码生成提供类型表
  • TS2304:找不到名称要求和进程

    When I want to start my angular 2 app using npm start I get errors 我从互联网上尝试了很多 解决方案 但没有任何效果 我的版本 npm 4 1 2 打字 2 1 0 节点 7
  • 如何使用 CallKit 进行非 voip 呼叫?

    我想使用新的 iOS 10 CallKit 但使用默认运营商从应用程序拨打电话 是否可以 如果是这样 怎么办 目前使用 public void dial String number NSURL url new NSURL tel numbe
  • iOS:以编程方式检测iOS应用程序安装的来源(在已安装的应用程序内)[重复]

    这个问题在这里已经有答案了 我想知道是否有办法检测用户如何在 AppStore 中找到我的应用程序 例如 如果有一些参数 我可以将其连接到 AppStore 中我的应用程序的 URL 并将其获取到已安装的应用程序中 有可能http itun
  • 搜索“整个解决方案”停止工作

    不知何故 Visual Studio 搜索已停止为我工作 每当我搜索 整个解决方案 中的某些文本时 我都会得到以下结果 查找所有 我正在搜索的内容 子文件夹 查找结果 1 整个解决方案 找不到要查找的匹配文本 查找为 停止进行中 为什么突然
  • Magento 按小数排序属性而不是按字母数字排序

    所以我疯狂地在谷歌上搜索 试图找到一个解决这个问题的方法 该方法实际上可以正常工作 但却空手而归 使用类别页面上的 排序依据 功能按属性 容量 重量等 对产品进行排序时 Magento 像这样排序 因为它认为数字是文本字符串 产品A 10公
  • 无法让 EclipseLink MOXy 工作

    我是 JAXB 新手 我想使用 EclipseLink MOXy 更改默认名称空间前缀 我的 package info java 有以下代码行 javax xml bind annotation XmlSchema namespace ht
  • Chrome自动设置输入格式=数字

    我有一个 Web 应用程序 我使用 HTML5 属性 type number 将输入字段指定为数字
  • 如何将主干视图连接到流星车把模板?

    看起来像 Backbone view meteor 和 handbars 在操作 DOM 的一部分时具有重叠功能 我查看了 ToDo 应用程序 它应该使用 Backbone 但实际上 他们只使用路由器 主干视图也处理模板 但它们听起来与流星
  • 有没有办法限制“git gc”使用的内存量?

    我在共享主机上托管 git 存储库 我的存储库中必然有几个非常大的文件 每次我尝试在存储库上运行 git gc 时 我的进程都会因使用过多内存而被共享托管提供商杀死 有没有办法限制 git gc 可以消耗的内存量 我希望它可以用内存使用来换
  • VB6下载网页源码

    VB6 有没有办法将网页源下载到字符串或文本框 例如 在 VB Net 中 WebClient 类允许您使用 DownloadString google com 执行此操作 我如何在 vb6 中执行相同操作 注意 我想避免使用网络浏览器 我
  • WPF 应用程序的异常报告

    在未处理的异常期间 是否有某种方法可以捕获输出并在应用程序崩溃时显示错误报告对话框 我的想法是在后台运行一个小程序 它唯一的工作就是监听主应用程序的异常退出 然后显示 报告 对话框 用户可以选择通过电子邮件向我发送错误的输出 不太确定如何实