AccessViolationException 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
尝试读取或写入受保护内存时引发的异常。
public ref class AccessViolationException : SystemException
public class AccessViolationException : SystemException
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class AccessViolationException : SystemException
type AccessViolationException = class
inherit SystemException
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type AccessViolationException = class
inherit SystemException
Public Class AccessViolationException
Inherits SystemException
- 继承
- 属性
注解
当代码尝试读取或写入尚未分配的内存或无权访问的内存时,访问冲突发生在非托管或不安全的代码中。 这通常是因为指针具有错误的值。 并非所有通过错误的指针进行读取或写入都会导致访问冲突,因此访问冲突通常表示多个读取或写入是通过错误的指针发生的,并且内存可能已损坏。 因此,访问违规几乎总是表明严重的编程错误。 AccessViolationException 明确标识这些严重错误。
在完全由可验证托管代码组成的程序中,所有引用要么有效,要么为空,并且无法发生访问冲突。 在可验证代码中,任何尝试引用空引用的操作都会引发 NullReferenceException 异常。 AccessViolationException仅当可验证的托管代码与非托管代码或不安全的托管代码交互时,才会发生此情况。
AccessViolationException 异常疑难解答
AccessViolationException异常只能在不安全的托管代码中发生,或者当可验证的托管代码与非托管代码交互时:
- 不安全托管代码中发生的访问冲突可以表示为 NullReferenceException 异常或 AccessViolationException 异常,具体取决于平台。
- 非托管代码中的访问冲突在弹回到托管代码时,总是被包装在一个AccessViolationException异常中。
在任一情况下,都可以识别并更正异常的原因 AccessViolationException ,如下所示:
确保您尝试访问的内存已被分配。 AccessViolationException尝试访问受保护内存(即访问未分配或进程不拥有的内存)始终引发异常。
自动内存管理是 .NET 运行时提供的服务之一。 如果托管代码提供与非托管代码相同的功能,请考虑迁移到托管代码以利用此功能。 有关详细信息,请参阅 自动内存管理。
确保尝试访问的内存尚未损坏。 如果通过错误的指针执行了多个读取或写入作,则内存可能会损坏。 在预定义缓冲区之外读取或写入地址时,通常会发生这种情况。
AccessViolationException 和 try/catch 块
AccessViolationException 如果异常发生在运行时保留的内存之外,则 .NET 运行时引发的异常不会由 catch 结构化异常处理程序中的语句处理。
Caution
HandleProcessCorruptedStateExceptions 属性在当前 .NET 版本中已过时。 不支持从损坏的进程状态异常恢复,如果存在该属性,将被忽略。
构造函数
| 名称 | 说明 |
|---|---|
| AccessViolationException() |
使用描述错误的系统提供的消息初始化 AccessViolationException 类的新实例。 |
| AccessViolationException(SerializationInfo, StreamingContext) |
已过时.
使用序列化的数据初始化 AccessViolationException 类的新实例。 |
| AccessViolationException(String, Exception) |
使用指定的错误消息和对作为此异常原因的内部异常的引用初始化 AccessViolationException 类的新实例。 |
| AccessViolationException(String) |
使用描述错误的指定消息初始化 AccessViolationException 类的新实例。 |
属性
| 名称 | 说明 |
|---|---|
| Data |
获取键/值对的集合,这些键/值对提供有关异常的其他用户定义的信息。 (继承自 Exception) |
| HelpLink |
获取或设置与此异常关联的帮助文件的链接。 (继承自 Exception) |
| HResult |
获取或设置 HRESULT,它是分配给特定异常的编码数值。 (继承自 Exception) |
| InnerException |
Exception获取导致当前异常的实例。 (继承自 Exception) |
| Message |
获取描述当前异常的消息。 (继承自 Exception) |
| Source |
获取或设置导致错误的应用程序或对象的名称。 (继承自 Exception) |
| StackTrace |
获取调用堆栈上即时帧的字符串表示形式。 (继承自 Exception) |
| TargetSite |
获取引发当前异常的方法。 (继承自 Exception) |
方法
| 名称 | 说明 |
|---|---|
| Equals(Object) |
确定指定的对象是否等于当前对象。 (继承自 Object) |
| GetBaseException() |
在派生类中重写时,返回 Exception 一个或多个后续异常的根本原因。 (继承自 Exception) |
| GetHashCode() |
用作默认哈希函数。 (继承自 Object) |
| GetObjectData(SerializationInfo, StreamingContext) |
已过时.
在派生类中重写时,设置 SerializationInfo 有关异常的信息。 (继承自 Exception) |
| GetType() |
获取当前实例的运行时类型。 (继承自 Exception) |
| MemberwiseClone() |
创建当前 Object的浅表副本。 (继承自 Object) |
| ToString() |
创建并返回当前异常的字符串表示形式。 (继承自 Exception) |
活动
| 名称 | 说明 |
|---|---|
| SerializeObjectState |
已过时.
序列化异常以创建包含有关异常的序列化数据的异常状态对象时发生。 (继承自 Exception) |