Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 异常行为?_C#_Debugging_Exception_.net 4.0_Access Violation - Fatal编程技术网

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
块。现在我遇到了一个新问题(见我的更新)。我明白了,你能反映一下我对你的问题的最后评论吗?也许你能抓住这个例外,但鉴于文本,这可能是一件冒险的事情。。。