Visual Studio 不会因用户未处理的异常而中断
Posted
技术标签:
【中文标题】Visual Studio 不会因用户未处理的异常而中断【英文标题】:Visual Studio not breaking on user-unhandled exceptions 【发布时间】:2013-06-02 23:11:22 【问题描述】:在 Visual Studio 中运行我的应用时,它会以未处理的异常结束,而不是显示带有异常信息的消息框并按照我的习惯继续运行。
我需要更改哪些选项才能恢复到我习惯的行为?
编辑:在调试/异常中,我确实为 CLR 异常选择了用户未处理选项。
【问题讨论】:
【参考方案1】:对于视觉工作室 2015:
1.打开异常设置窗口(2015年新增)
2.检查所有CLR异常
3.如果您不需要 Visual Studio 抛出特定异常,请取消选中此项
【讨论】:
我打开异常窗口并点击“重置为默认值”,这解决了我在 VS2017 中的问题 终于可以给python添加适当的异常处理了,谢谢!【参考方案2】:Debug->Exceptions->Check Thrown/User-Unhandled
用于公共语言运行时异常
编辑:也许尝试进行清理/重建,然后再次运行?也许调试符号已损坏或其他什么..
【讨论】:
我正在查看调试/选项和设置/调试/常规,但我没有看到该选项。我找对地方了吗? @Brandon 抱歉,错字。它正在调试->异常 找到它:它在 Debug/Exceptions 下,而不是 Debug/Options 自 VS 2015 起:调试 > Windows > Exception Settings 或Ctrl+Alt+E
在 VS 2015 中没有这样的复选框吗?【参考方案3】:
根据应用程序,以下选项可能会对您有所帮助:
工具 → 选项... → 调试 → 常规
当异常跨越 AppDomain 或托管/本机边界时中断(仅限托管) 启用异常助手 在未处理的异常上展开调用堆栈[注意:基于下面的 cmets,以下提示不起作用,并且对于某些人来说,创建了旨在解决的问题答案:谨慎使用...]
取消选中 仅启用我的代码 ← JMC 可以防止您在不属于您的代码和/或缺少符号的代码中捕获异常。【讨论】:
谢谢,我真的希望取消选中 Just My Code 可以做到这一点,但上述方法均无效。我刚刚开始了一个新项目,以查看在引发错误时是否得到相同的行为,但即使(我认为)设置应该相同,它也能正常工作。我猜下一步是将内容复制到一个新项目中。 Disabling Enable Just My Code 导致 Visual Studio 在 Exceptions 中隐藏 User-unhandled 列 窗口,它阻止了 Visual Studio 中断 任何 用户未处理的异常。因此,就我而言,您的指示实际上导致了这个问题试图解决的问题!【参考方案4】:就我而言,当我转到 Debug -> Exceptions 时,User-unhandled 列丢失了。转到 Debug -> Options and Settings 并启用 Enable Just My Code 解决了这个问题,从而完全解决了这个问题。
【讨论】:
【参考方案5】:这为我解决了这个问题:在快速启动 (Ctrl-Q) 中键入“ResetToC#”(或 ResetTo 其他内容)
我很长一段时间都遇到了同样的问题。在 Debug->Exceptions 菜单中,缺少“User-unhandled”列!非常烦人。
我卸载了所有插件,重新安装了 VS,但没有任何效果(Visual Studio 可能在我的机器上留下了一些设置,这些设置在重新安装后会重复使用)。
这似乎不是最好的解决方案,因为必须有一些设置也可以做到这一点。我找不到它,并且在数月来无法中断用户未处理的异常之后,ResetToC# 选项让我松了一口气。
【讨论】:
谢谢,如果我再次遇到这个问题,我肯定会尝试这个,因为似乎没有其他工作:) 在我的例子中,User-unhandled 列丢失的原因是在调试选项中禁用了Enable Just My Code。【参考方案6】:我在 Visual Studio 2013 的一个非常大的 C# 项目中遇到了同样的问题。但是,如果我创建了一个新的空项目并抛出了一个测试 ApplicationException,一切都会按预期工作,调试器会中断并给我异常助手。在我现有的项目上做同样的事情只会停止调试并返回 VS 编辑模式。我注意到在“输出”窗口中,最后一个调试跟踪会显示
程序“[2624] MyApplication.vshost.exe”已退出并显示代码 -1073741819 (0xc0000005) '访问冲突'。
我真的没有将所有内容复制到新项目中的奢侈,而且上述建议都对我不起作用。通过反复试验,我发现了一些可行的方法:取消选中“选项”>“调试”>“常规”>“启用异常助手”下的“在未处理的异常上展开调用堆栈”。
顺便说一句,如果我通过异常助手手动强制调用堆栈在同一个 C# 项目上展开(通过单击“启用编辑”链接),调试器将关闭,我无法编辑并继续.但是在一个新项目上,它确实可以放松和编辑并继续工作!因此,我的项目肯定有 VS 不喜欢的地方,但我暂时将其用作可接受的解决方法。
【讨论】:
【参考方案7】:唯一对我有用的是:
工具 -> 导入和导出设置 -> 重置所有设置,然后重置为 C#。
【讨论】:
在 Visual Studio 2017 中,它是工具 -> 环境 -> 导入和导出设置...而我的 Visual Studio 2017 没有选项重置为 C#(或任何其他语言).. .【参考方案8】:将目标平台从 x64 更改为 x86 对我有帮助
【讨论】:
【参考方案9】:如果您的解决方案中有多个网站项目,请检查您要调试的项目是否处于活动状态。右键单击它并选择设置为启动项目。
这让我难了一阵子,因为没有明显的迹象表明正在调试错误的网站。
【讨论】:
【参考方案10】:如果您将鼠标悬停在断点上并看到“未加载符号警告”,
您可能需要将解决方案配置从“发布”更改为“调试”。
【讨论】:
【参考方案11】:唯一对我有用的是取消选中“使用新的异常帮助程序”。让它捕获异常,停止程序,启用“使用新的异常助手”,然后 VS2019 神奇地再次开始捕获未处理的异常。
我仍然没有在 VS 2019 的任何地方找到“用户未处理”,但至少现在可以使用。
【讨论】:
【参考方案12】:我在这里尝试了很多建议,但最后对我来说,切换x86
/x64
帮助我解决了VS调试器终止的问题,没有任何错误或异常。
【讨论】:
以上是关于Visual Studio 不会因用户未处理的异常而中断的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2013 未引发用户未处理的异常
Visual Studio 2015 中断未处理的异常不起作用
防止 Visual Studio 调试因明显的“未处理异常”而中断
我可以让 Visual Studio 停止任务代码中未处理的异常吗?