问题描述
我得到在我的C#.NET程序以下异常:
I am getting the following exception in my C#.Net program:
有一个第一次机会异常类型'System.Data.SqlClient.SqlException'在System.Data.dll中发生 在0x000007feff75121b第一次机会异常的程序myapp.exe:0000005:访问冲突读取位置0x0000000000000000。 第一个机会异常类型的System.AccessViolationException在CustomMarshalers.dll发生 类型的未处理的异常'System.AccessViolationException在CustomMarshalers.dll发生 其他信息:试图读取或写入受保护的内存。这通常表明其他内存已损坏。
我明白了一个try / catch(异常)块内,但它永远不会被抓住。
I get it inside of a try/catch(Exception) block but it is never being caught.
我试图对其进行调试,看看它为什么发生,但它是很难做到的,没有赶上它。
I'm trying to debug it to see why it is happening but it is difficult to do that without catching it.
应该可以赶上0000005异常C#.NET? (框架4.0在Windows 2008 R2)。
Should it be possible to catch a 0xC0000005 exception in C#.Net? (Framework 4.0 on Windows 2008 R2).
感谢您的任何提示。
推荐答案
您无法在默认情况下捕获一个AccessViolationException,因为它表明一个尝试读取或写入受保护的内存。您可以添加的<$c$c>[HandleProcessCorruptedStateExceptions]$c$c>属性的方法,其中这样的情况,虽然:
You cannot catch an AccessViolationException by default, as it indicates a try to read or write protected memory. You can add the [HandleProcessCorruptedStateExceptions]
attribute to the method where it occurs, though:
在默认情况下,公共语言运行库(CLR)不提供这些例外管理code,并在尝试 / *的抓的*块(和其他异常处理条款)不为他们调用。如果你是绝对相信,你要保持你的这些例外的处理,必须应用在 HandleProcessCorruptedStateExceptionsAttribute 属性要执行的异常处理条款的方法。在CLR只有在同时拥有 HandleProcessCorruptedStateExceptionsAttribute 和SecurityCriticalAttribute属性。
这篇关于不能赶上0000005例外,在C#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!