异常未处理的弹出窗口

Posted

技术标签:

【中文标题】异常未处理的弹出窗口【英文标题】:Exception unhandled popup 【发布时间】:2022-01-19 00:11:32 【问题描述】:

我最近开始通过 .net 框架和 winforms 在 Visual Studio 上创建自己的桌面应用程序。我开始越来越了解这个过程,但这件事困扰着我。 发生异常时,我会收到未处理异常的弹出窗口,但此异常显示在 Application.Run(new Form1());在标准 program.cs 中。我知道这是 Form1.cs 文件中的一个异常,但我如何才能知道该异常发生在哪一行?当我按“查看详细信息”时,我不太了解快速监视窗口。 这可能是我没有看到的一件愚蠢的事情,因为我在网上找不到任何东西。

提前谢谢你!

example of an exception

【问题讨论】:

读取 StackTrace。它具有导致异常的每个方法调用按升序排列(实际抛出异常的方法在顶部) 【参考方案1】:

不幸的是,它是这样工作的,因为应用程序的主循环在 Run() 方法中。该主循环包含一些异常处理代码,但会将您感兴趣的代码进一步抛出。默认情况下,调试器只会在再次引发异常的第二个地方启动,这不会向您显示太多信息。

您有以下几种可能:

检查堆栈跟踪:在弹出窗口中,单击“查看详细信息”链接。那里有一个显示堆栈跟踪的字段(即已调用到发生错误的位置的函数列表)。它的顶部是最近调用的函数,因此是导致问题的函数。 将调试器配置为在抛出异常时中断,而不仅仅是在未处理异常时中断。打开 Exception settings 窗口(在 Debugger->Windows 下)并在“Common language exceptions”旁边添加一个复选框。现在这可能会显示一些您可以正确处理的异常,但通常情况下,正常程序流程中不应该有很多异常。当您右键单击该设置时,您可以将其更改回正常状态,当您展开它时,您可以单独配置每种异常类型的行为。

【讨论】:

【参考方案2】:

从您的屏幕截图中可以看出,十进制值太大或太小。 https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/decimal-data-type

如果我们想知道这个异常发生在哪一行,我们可以设置一个断点并启动调试器。此页面可以帮助您使用调试器。 https://docs.microsoft.com/en-us/visualstudio/debugger/debugger-feature-tour?view=vs-2022

【讨论】:

以上是关于异常未处理的弹出窗口的主要内容,如果未能解决你的问题,请参考以下文章

数据切换上的弹出窗口未在不同版本的引导程序中呈现

用于处理应用程序中的弹出窗口的 Web 浏览器

提交表单后模态弹出窗口未正确关闭

处理 SFSafariViewController 中的弹出窗口/选项卡

关闭表单提交时打开的弹出窗口并触发单击父窗口

切换到同一窗口中的弹出窗口