UnhandledException 事件不起作用?

2024-05-06

我正在编写一个小库,它捕获所有未处理的异常,显示一个小对话框(类似于 NF 的常见对话框),使用户有机会将异常发送给开发人员。为此,我使用 AppDomain 的 UnhandledException-Event,如下所示:

app.UnhandledException += (object sender, UnhandledExceptionEventArgs e) =>
        {
            ExceptionHandler handler = new ExceptionHandler((Exception)e.ExceptionObject, ExEntry);
            UnhandledExceptionListened(handler);
            if (Properties.Settings.Default.ShowStandardExceptionDialog)
            {
                ExceptionDialog exdialog = new ExceptionDialog(handler);
                exdialog.ShowDialog();
            }
        };

ExceptionHandler 和 ExEntry 是我的库的类。但是:如果发生异常,编译器会跳转到我的 Lambda 表达式,尝试调试第一行代码,然后显示之前发生的错误,而不处理 lambda 的其余部分。 但如果我只是写:

 app.UnhandledException += (object sender, UnhandledExceptionEventArgs e) =>
        {
                ExceptionDialog exdialog = new ExceptionDialog(handler);
                exdialog.ShowDialog();
        };

它工作得很好。有谁知道为什么这不起作用?


可能有两个原因。

一是你没设置未处理异常模式 http://msdn.microsoft.com/library/system.windows.forms.unhandledexceptionmode.aspx适当地:

Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

另一个是你没有处理好线程异常 http://msdn.microsoft.com/library/system.windows.forms.application.threadexception.aspx,并且抛出的异常不是未处理的异常,而是线程异常。

以下是一个示例,您需要根据您的场景进行修改:

Application.ThreadException+=
    new ThreadExceptionEventHandler(Log.WriteThreadException);

AppDomain.CurrentDomain.UnhandledException+=
    new UnhandledExceptionEventHandler(Log.WriteUnhandledException);

Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

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

UnhandledException 事件不起作用? 的相关文章

随机推荐

  • Kendo 有 GUI 设计师吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Kendo 有没有像 Sencha Architect for Ext JS 这样的控件布局设计工具
  • IMAP 同步

    我正在实现 IMAP 客户端 但 IMAP 邮箱同步存在问题 首先 可以从 IMAP 服务器获取新邮件 但我不知道如何从邮箱中查找已删除的邮件 我应该从服务器获取所有消息并与本地数据进行比较以进行同步吗 通常的方法是对每个文件夹执行以下两个
  • nginx docker 容器:502 错误网关响应

    我有一个服务监听 8080 端口 这不是一个容器 然后 我使用官方镜像创建了一个 nginx 容器 docker run name nginx d v root nginx conf etc nginx conf d p 443 443 p
  • VBA:新集合 -> 模块不是有效类型

    我尝试使用集合作为函数的一部分 但是在编译时不断收到错误 模块不是有效类型 即使该函数只是定义一个集合 我也会得到相同的结果 Function CountUniqueTags Dim table As Collection Set tabl
  • Hibernate HQL 中使用派生表的子查询

    我有一个 Hibernate HQL 问题 我想将子查询编写为派生表 出于性能原因 在 HQL 中可以做到这一点吗 例子 FROM Customer WHERE country id in SELECT id FROM SELECT id
  • 无法在函数内将数据写入 Excel 2007/2010 中的 VBA 单元格

    我想通过 VBA 设置单元格的值 我用谷歌搜索了一下 看到了一些解决方案 Sheets SheetName Range A1 value someValue Sheets SheetName Cells 1 1 value someValu
  • 如何从numpy数组中获取两个最小值

    我想从数组中取出两个最小值x 但是当我使用np where A B np where x x min 0 1 我收到此错误 ValueError 需要超过 1 个值才能解压 我该如何修复这个错误 我需要在数组中按升序排列数字吗 您可以使用n
  • 哪个线程运行 ContentProvider?

    如果我从 Activity 调用 ContentProvider ContentProvider 会在哪个线程中运行 例如 如果 Activity 被终止并且查询正在 ContentProvider 中执行 会发生什么情况 假设您的网络查询
  • [GSI_LOGGER]:“callback”的值不是函数。配置被忽略

    I m 迁徙 https developers google com identity gsi web guides migration from 谷歌登录平台 https developers google com identity si
  • 在 Android 中通过摇动打开/关闭屏幕

    我正在制作一个应用程序 需要在用户摇动手机时打开 关闭屏幕 到目前为止 我已经有了一个 SensorEventListener 它可以按照答案中的建议监听震动这个问题 https stackoverflow com questions 23
  • WCF 模拟和 SQL 可信连接?

    我们有一个托管在 IIS7 下的服务 SQL 服务器的连接字符串设置为 受信任 为了进行身份验证 我需要在服务上设置模拟并让客户端启动模拟连接 有没有办法不设置模拟并仍然允许服务通过可信连接登录到 SQL Server 我们希望避免让客户端
  • CSS 布局:2 列固定流体(再次)

    我正在尝试设置一个 2 列布局 其中左侧区域是固定的 主要内容是流动的 我在这里看到了几个答案 它们往往有效 然而 当我在 左侧 区域使用 jsTree 并在主 内容区域使用 jQuery UI 选项卡时 会出现一些奇怪的行为 html d
  • Keras 中的 Tensorflow 自定义损失函数 - 张量循环

    我正在尝试在 Keras 中编写自定义损失函数 如下所示 Keras 中的自定义损失函数 https stackoverflow com questions 43818584 custom loss function in keras 我的
  • 如何告诉 RestTemplate 使用 UTF-8 编码进行 POST?

    我在使用 RestTemplate 发布采用 UTF 8 编码的 JSON 时遇到问题 JSON 的默认编码是 UTF 8 因此媒体类型甚至不应该包含字符集 我尝试将字符集放入 MediaType 但它似乎无论如何都不起作用 My code
  • 我可以打包 Webpack 但不缩小调试范围吗?

    似乎是一个真正愚蠢的问题 必须在某个地方有答案 但我已经搜索了几个小时但没有结果 我是 ReactJS 和使用 Webpack 构建的新手 一般来说是构建配置 我正在使用 Webpack 链接和捆绑我的整个项目 包括 ReactJS 它工作
  • React Native iOS Release 构建停留在旧代码上,但 Debug 构建工作正常

    当我尝试构建我的 React Native 应用程序时XCode in Release mode在将其投入生产之前进行检查 它是否会陷入旧代码中 无论我对 JS 文件进行什么更改 它都不会执行此操作 在调试模式下 这种情况不会发生 只是正常
  • 如何防止mysql隐式提交

    mysql文档 http dev mysql com doc refman 5 5 en implicit commit html指出某些语句将在事务期间导致隐式提交 例如 CREATE TABLE foo bar INT START TR
  • 为什么 LISP 中符号名称中的连字符是约定俗成的?

    这个推荐的理由是什么 为什么不与使用下划线的其他编程语言保持一致 我认为 LISP 使用连字符有两个原因 历史 和 因为你可以 History LISP 是一种古老的语言 在早期输入下划线可能会很困难 例如 我用于 LISP 的第一个终端是
  • 如何修复 STL 样式容器以容纳不完整或抽象类型?

    几天前 我尝试以与 STL 容器相同的风格编写一个基本的树实现 现在我尝试在我的代码中使用它 但是有两件事似乎不起作用 但可以说std vector 即 使用不完整类型和使用抽象类型 如何修复我的树实现以获得此功能 我尝试稍微压缩一下我的代
  • UnhandledException 事件不起作用?

    我正在编写一个小库 它捕获所有未处理的异常 显示一个小对话框 类似于 NF 的常见对话框 使用户有机会将异常发送给开发人员 为此 我使用 AppDomain 的 UnhandledException Event 如下所示 app Unhan