异常未处理的弹出窗口
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
【讨论】:
以上是关于异常未处理的弹出窗口的主要内容,如果未能解决你的问题,请参考以下文章