C# 异常行为?
我以前从未遇到过这种行为,我想知道是否有人能够解释这件事 如图所示,我正在捕获类型为C# 异常行为?,c#,debugging,exception,.net-4.0,access-violation,C#,Debugging,Exception,.net 4.0,Access Violation,我以前从未遇到过这种行为,我想知道是否有人能够解释这件事 如图所示,我正在捕获类型为AccessViolationException的异常,但调试器却抱怨异常未处理 怎么可能呢 哦,我知道你不应该有一个空的catch块,这不是我的问题 谢谢 编辑: 现在我得到的是这个: 像这样的奇怪事情偶尔会发生在我身上,我将推荐新手IT方法。重新启动计算机。NET中的CLI环境有时会出现问题,因为我以前将代码挂在foreach循环中。这是您必须明确执行的操作,您可以通过向函数添加[HandledProces
AccessViolationException
的异常,但调试器却抱怨异常未处理
怎么可能呢
哦,我知道你不应该有一个空的catch
块,这不是我的问题
谢谢
编辑:
现在我得到的是这个:
像这样的奇怪事情偶尔会发生在我身上,我将推荐新手IT方法。重新启动计算机。NET中的CLI环境有时会出现问题,因为我以前将代码挂在foreach循环中。这是您必须明确执行的操作,您可以通过向函数添加
[HandledProcessCorruptedStateExceptions]
属性来捕获这些问题
请注意,这些问题没有得到处理是有原因的,因为如果忽略或笼统处理,意外情况仍然可能是有害的。在这两种情况下都不能保证您所做的是完全安全的!只能在无法接受终止进程的情况下处理它。暗中一枪:用额外的try catchw包装整个foreach,顺便说一句,如果运行代码(而不是调试代码),会发生什么?嗨,我尝试过发布版本,但仍然可以重现问题,很明显,我没有能力调试它-但它在与以前相同的条件下崩溃。@max:出于性能原因,将try块放在foreach之外肯定是您想要做的事情,跳入跳出异常处理可能是一件非常痛苦的事情。您将密钥发送到什么位置?你能看看SendWait堆栈的内部吗?那么你要么是内存损坏,要么是写了不好的东西,因为这不是正常的行为,.NET也没有那么多错误。如果某些代码导致此异常,则重新启动计算机可能会导致相同的故障。。。编写线程不安全的代码、调整正在枚举或大量处理的内容也会导致foreach循环挂起;在CLI环境中,这些都不会被视为错误。您是说我可能会有损坏我机器上其他数据的风险吗?它不允许您访问内存,因此在发生此异常的情况下,更改非常小,您机器上的其他数据将被损坏。因此,我想您可以尝试使用该属性并捕获它,或者找出它为什么只为发送这些键而给出该异常……您好,我已经按照建议添加了该属性,并反转了
foreach
和try
-catch
块。现在我遇到了一个新问题(见我的更新)。我明白了,你能反映一下我对你的问题的最后评论吗?也许你能抓住这个例外,但鉴于文本,这可能是一件冒险的事情。。。