问题标签 [unhandled]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1962 浏览

混合本机/托管可执行文件中的最终托管异常处理程序?

我有一个用 /clr 编译的 MFC 应用程序,我正在尝试为其他未捕获的托管异常实现最终处理程序。对于本机异常,覆盖CWinApp::ProcessWndProcException有效。

Jeff 的CodeProject 文章中建议的两个事件,Application.ThreadExceptionAppDomain.CurrentDomain.UnhandledException, 没有引发。

谁能建议一种为混合可执行文件提供最终托管异常处理程序的方法?


更新:

似乎这些异常处理程序仅在下游Application.Run或类似情况下触发(有工作线程风格,不记得名称。)如果您想真正全局捕获托管异常,则需要安装 SEH 过滤器。你不会得到一个System.Exception,如果你想要一个调用堆栈,你将不得不滚动你自己的助行器。

在有关此主题的 MSDN 论坛问题中,建议覆盖try ... catch (Exception^). 例如,CWinApp::Run. 这可能是一个很好的解决方案,但我没有研究过任何性能或稳定性影响。在保释之前,您将有机会使用调用堆栈进行日志记录,并且可以避免默认的 windows unahndled 异常行为。

0 投票
6 回答
7839 浏览

VS2008 调试器不会因未处理的异常而中断

我的 vs 调试器有一个奇怪的问题。在 vs 调试器下运行我的程序时,调试器不会因未处理的异常而中断。而是将控制权返回给 VS,就好像程序正常退出一样。如果我查看输出选项卡,在线程终止之前列出了第一次机会异常。

我了解如何使用“调试”菜单中的“例外”框。我检查了未处理异常的中断。如果我检查正在发生的特定异常的第一次机会异常,调试器将停止。

但是,据我了解,调试器也应该在任何“未处理异常”上停止。这不是为我做的。

这是我的“输出”选项卡的最后几行:

我不明白为什么异常在未处理时被标记为“第一次机会”异常。

我相信 0xe0434f4d 退出代码是一个通用的 COM 错误。

有任何想法吗?

地铁。

0 投票
2 回答
291 浏览

.Net 等价于 set_unexpected()

是否有与 C++ 意外()/set_unexpected()功能等效的 .net?


编辑: 对不起 - 我之前省略了一些细节:

语言:C# 2.0

我有一些遗留应用程序似乎在某处抛出了一些未处理的异常。我只是想采取一些措施来阻止客户的痛苦,直到我能够追踪问题的实际根源。据我所知,在 C++ 中,当一个未处理的异常冒泡到主例程时,set_unexpected() 指向的函数会被调用。因此,我对 .net 等效功能提出了疑问。

0 投票
2 回答
88 浏览

基于不同平台编译issues

我正在编译一个在 PC 上运行良好的解决方案,但是当尝试为不同的平台编译它时,我收到以下错误:

“未处理的异常:System.ArgumentException:已添加具有相同键的项目。”

有谁知道这可能意味着什么?

0 投票
2 回答
1155 浏览

自定义 Elmah YSOD 数据

我正在将 Elmah 与 ASP.NET 一起使用,并且想知道如何将自定义数据(例如会话变量)添加到未处理的异常电子邮件中。

我在 Global.asax 文件中尝试了几个处理程序,但似乎找不到合适的处理程序。

0 投票
1 回答
140 浏览

WPF - 处理未处理的异常时要捕获哪些信息?

我正在 WPF / .Net 3.5 中开发一个可以在 Internet 上下载的应用程序。我 - 尽我所能 - 编写无错误代码,并仅在必要时使用异常。然而,我在软件开发方面的经验表明,用户总是设法做一些奇怪的事情,这会导致以一种你无法想象的方式抛出异常。当我必须捕获未处理的异常时,我想收集更多信息。到目前为止,我正在捕获以下内容:

  • 标准异常字段(消息、类型、堆栈跟踪等)
  • 操作系统版本
  • .Net 版本
  • 加载到 AppDomain 中的应用程序 DLL 的版本
  • 应用许可信息
  • 检测用户执行的最后几个命令。

我非常清楚我不想捕获有关用户的任何“个人”信息,因为我只是不相信那种事情。因此,不用担心用户名/域/IP 地址(尽管异常信息被传递到 Web 服务,我将固有地获取 IP 信息,但它可能是代理机器)

我的问题

任何将应用程序发布到公共领域(即在不受控制的公司环境中的计算机上)的人 - 您能否提出其他有助于追踪错误原因的建议?

特别是我不想收集我无法管理/编码的信息 - 即 PC 上可用的内存量,或连接的打印机类型 - 这些事情由 .net 框架处理,我真的不应该(阅读:不想)必须更改我的代码以应对那里的变化!

谢谢!

0 投票
2 回答
5351 浏览

Windows 窗体未处理异常对话框

每当我的 C# 应用程序遇到 UE 时,我都想获得 Default Windows Forms Unhandled-Exception Dialog。在 vs 2005 中,当我在 app.conf 中关闭 jit 调试时,如下所示:

应用程序运行正常并显示 Windows Forms UE 默认对话框,包括继续、退出、调用堆栈等。

但是在 vs 2008 中,在同一台机器上或不同机器上,即使我禁用了 jit,我仍然会得到默认的 .NET 未处理异常对话框,其中包含调试、发送报告和不发送按钮。

如何使我的 vs 2008 应用程序像我在 vs 2005 中制作的一样,以显示 Windows Forms UE 对话框?

请不要推荐使用

只是因为我没有在我的 vs 2005 项目中使用自定义处理程序,我为什么要在 vs 2008 中使用?我想让这个工作做CLR。

任何帮助表示赞赏

0 投票
3 回答
1945 浏览

获取 Windows 错误报告对话框

在我的 C# 应用程序中,即使我处理异常:

然后在显示对话框并执行 Application.Exit 的处理程序中仍然使用 Send,Don't Send... 获取 Windows 错误报告对话框

如何防止弹出windows错误报告对话框?


事实上,如果异常是从主窗体构造函数中抛出的,那么程序会以 Windows 错误报告 dlg 结束。否则,如果来自 UI 线程的其他位置,则如预期的那样。

0 投票
5 回答
134 浏览

为什么在 C# 中处理相同的异常时会出现两个不同的结果?

我在两个程序中处理了相同的异常,但得到了不同的结果。我不知道为什么。

第一个结果是程序无法捕获

Scapshot1:www.freeimagehosting.net/uploads/e2b37433a3.png

第二个是程序成功捕获的

Scapshot2:www.freeimagehosting.net/uploads/6ab7564999.png

为什么我有这么不同?

0 投票
2 回答
7570 浏览

Winforms 应用程序中未处理的异常

我有一个简单的 WinForms 应用程序,用于输入测试用例。自从我将此应用程序升级到 .NET 4.0 并在选项卡页控件中添加了一个新选项卡页以针对 XSD 架构验证 XML 以来,应用程序一直随机崩溃。我一直无法重现异常。

我的 QA 人员收到的错误是通用的 Windows 消息:

TestCaseViewer 遇到问题需要关闭。对此造成的不便,我们表示歉意。

为了尝试解决真正的错误,我在程序的 Main 方法的开头添加了以下代码:

事件处理程序如下所示:

不幸的是,这并没有帮助,无论是什么错误都会继续这样做,从而产生未处理的错误,该错误正在冒泡到操作系统。

谁能给我有关捕获此异常的任何其他想法?