在我正在制作的应用程序中,有时抛出但未处理的异常似乎消失在空气中并导致GUI出现奇怪的错误。
我通常会逐步找到它,直到到达引发异常的行,此时Visual Studio会立即停止步进并返回应用程序。
这是一个IRC应用程序,所以它是由异步套接字连接大量事件驱动的。不确定这是否相关。
我没有任何空的捕获块或任何类似的东西。
答案 0 :(得分:3)
显然这是x64机器的已知错误。
错误和解决方法在Microsoft Connect上。
修改强>
如果有人对原因感兴趣,那么在错误关闭时就会发布:
您好,
此错误已关闭为“外部”,因为此行为是由此产生的 x64版本的Windows如何处理异常。当用户模式 异常跨越了内核转换,x64版本的Windows没有 允许异常传播。因此附加调试器 不知道发生异常的事实导致了 调试器无法中断未处理的异常。
不幸的是,Visual Studo团队无法做到这一点 解决这个问题,它是操作系统设计的结果。所有 有关此问题的反馈应提交给Windows团队; 但Windows团队认为这是“正确的”操作 系统设计,并认为x86行为“不正确”。
最诚挚的问候,Visual Studio调试器
答案 1 :(得分:1)
这是一个用于查找神秘异常的调试技巧:在Visual Studio中,转到Debug - >异常...并检查公共语言运行时异常的“Thrown”。这样,每当异常被触发时,IDE都会中断。我已经用了很多东西来查找似乎被吞下的异常。
不要忘了把它关掉。 :)
答案 2 :(得分:-1)
后台线程中任何未处理的异常都会导致运行时立即终止。您需要捕获并处理异步方法中的任何异常。