AccessViolationException AccessViolationException AccessViolationException AccessViolationException Class

Определение

Исключение, возникающее при попытке чтения или записи в защищенную область памяти.The exception that is thrown when there is an attempt to read or write protected memory.

public ref class AccessViolationException : SystemException
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class AccessViolationException : SystemException
type AccessViolationException = class
    inherit SystemException
Public Class AccessViolationException
Inherits SystemException
Наследование
AccessViolationExceptionAccessViolationExceptionAccessViolationExceptionAccessViolationException
Атрибуты

Комментарии

Нарушение прав доступа в неуправляемом или небезопасном коде при попытке чтения или записи в память, которая не была выделена или к которой нет доступа.An access violation occurs in unmanaged or unsafe code when the code attempts to read or write to memory that has not been allocated, or to which it does not have access. Обычно это происходит, поскольку указатель имеет неверное значение.This usually occurs because a pointer has a bad value. Не все операции чтения или записи по неправильным указателям приводят к нарушениям прав доступа, поэтому нарушение прав доступа обычно указывает, что таких операций было несколько и что память может быть повреждена.Not all reads or writes through bad pointers lead to access violations, so an access violation usually indicates that several reads or writes have occurred through bad pointers, and that memory might be corrupted. Таким образом нарушение прав доступа почти всегда указывают на серьезные ошибки программирования.Thus, access violations almost always indicate serious programming errors. AccessViolationException Четко определяет этих серьезных ошибок.An AccessViolationException clearly identifies these serious errors.

В программах, состоящий только из проверяемых управляемого кода все ссылки являются либо допустимыми, либо значение null, и нарушения прав доступа невозможны.In programs consisting entirely of verifiable managed code, all references are either valid or null, and access violations are impossible. Любая операция, которая пытается сослаться на пустую ссылку в проверяемом коде вызывает исключение NullReferenceException исключение.Any operation that attempts to reference a null reference in verifiable code throws a NullReferenceException exception. AccessViolationException Происходит, только когда проверяемый управляемый код взаимодействует с неуправляемым кодом или с небезопасным управляемым кодом.An AccessViolationException occurs only when verifiable managed code interacts with unmanaged code or with unsafe managed code.

AccessViolationException исключениямиTroubleshooting AccessViolationException exceptions

AccessViolationException Исключение может возникнуть только в небезопасном управляемом коде или при управлении проверяемый код взаимодействует с неуправляемым кодом:An AccessViolationException exception can occur only in unsafe managed code or when verifiable managed code interacts with unmanaged code:

  • Нарушение прав доступа, возникающее в небезопасном управляемом коде может быть выражено как NullReferenceException исключение или AccessViolationException исключения, в зависимости от платформы.An access violation that occurs in unsafe managed code can be expressed as either a NullReferenceException exception or an AccessViolationException exception, depending on the platform.

  • Нарушение прав доступа в неуправляемом коде, поднимается вверх к управляемому коду всегда упаковывается в AccessViolationException исключение.An access violation in unmanaged code that bubbles up to managed code is always wrapped in an AccessViolationException exception.

В любом случае можно определить и устранить причину AccessViolationException исключение следующим образом:In either case, you can identify and correct the cause of the AccessViolationException exception as follows:

Убедитесь, что память, в которую производится доступ, была выделена.Make sure that the memory that you are attempting to access has been allocated.
AccessViolationException Всегда исключение при попытке получить доступ к защищенной памяти — то есть, для доступа к памяти, который не выделен, или, не принадлежащие процессу.An AccessViolationException exception is always thrown by an attempt to access protected memory -- that is, to access memory that is not allocated or that is not owned by a process.

Автоматическое управление памятью — это одна из служб, которые предоставляет среда CLR.Automatic memory management is one of the services that the common language runtime provides. Если управляемый код обеспечивает ту же функциональность, что ваш неуправляемый код, можно переместить в управляемый код, чтобы воспользоваться преимуществами этой функции.If managed code provides the same functionality as your unmanaged code, you may wish to move to managed code to take advantage of this functionality. Для получения дополнительной информации см. Automatic Memory Management.For more information, see Automatic Memory Management.

Убедитесь, что память, в которую производится доступ, не была повреждена.Make sure that the memory that you are attempting to access has not been corrupted.
Если несколько операций чтения или записи произошли по неправильным указателям, память может быть повреждена.If several read or write operations have occurred through bad pointers, memory may be corrupted. Обычно это происходит при чтении или записи для адресов за пределами предопределенные буфера.This typically occurs when reading or writing to addresses outside of a predefined buffer.

Блоки AccessViolationException и try/catchAccessViolationException and try/catch blocks

Начиная с .NET Framework 4.NET Framework 4, AccessViolationException исключения, создаваемые среда CLR не обрабатываются catch инструкции в структурированный обработчик исключений при возникновении исключения вне памяти, зарезервированной с помощью общего языка Среда выполнения.Starting with the .NET Framework 4.NET Framework 4, AccessViolationException exceptions thrown by the common language runtime are not handled by the catch statement in a structured exception handler if the exception occurs outside of the memory reserved by the common language runtime. Для обработки таких AccessViolationException исключение, необходимо применить HandleProcessCorruptedStateExceptionsAttribute атрибут к методу, в котором возникает исключение.To handle such an AccessViolationException exception, you should apply the HandleProcessCorruptedStateExceptionsAttribute attribute to the method in which the exception is thrown. Это изменение не влияет на AccessViolationException исключения, создаваемые пользователем код, который можно продолжать перехватываться catch инструкции.This change does not affect AccessViolationException exceptions thrown by user code, which can continue to be caught by a catch statement. Для кода, написанные для предыдущих версий платформы .NET Framework, необходимо перекомпилировать и выполняться без доработок и .NET Framework 4.NET Framework 4, вы можете добавить <legacyCorruptedStateExceptionsPolicy > элемент к файл конфигурации этого приложения.For code written for previous versions of the .NET Framework that you want to recompile and run without modification on the .NET Framework 4.NET Framework 4, you can add the <legacyCorruptedStateExceptionsPolicy> element to your app's configuration file. Обратите внимание на то, что могут также получать уведомления о исключения, если вы определили обработчик для AppDomain.FirstChanceException или AppDomain.UnhandledException событий.Note that you can also receive notification of the exceptions if you have defined a handler for the AppDomain.FirstChanceException or AppDomain.UnhandledException event.

Сведения о версииVersion Information

Это исключение возникает в .NET Framework 2.0 и более поздних версий.This exception is thrown in the .NET Framework 2.0 and later versions. В более ранних версиях платформы .NET Framework, соответствует нарушение прав доступа в неуправляемый код или небезопасный управляемый код NullReferenceException в управляемом коде.In earlier versions of the .NET Framework, an access violation in unmanaged code or unsafe managed code is represented by a NullReferenceException in managed code. Объект NullReferenceException также возникает, когда пустая ссылка является разыменован в проверяемый управляемый код, вхождение, не связанных с повреждением данных, и нет способа для различения двух ситуаций в версии 1.0 или 1.1.A NullReferenceException is also thrown when a null reference is dereferenced in verifiable managed code, an occurrence that does not involve data corruption, and there is no way to distinguish between the two situations in versions 1.0 or 1.1.

Администраторы могут позволить отдельным приложениям, чтобы вернуться к поведению в .NET Framework версии 1.1.Administrators can allow selected applications to revert to the behavior of the .NET Framework version 1.1. Добавьте следующую строку в <среды выполнения> элемент раздел файла конфигурации приложения:Place the following line in the <runtime> Element section of the configuration file for the application:

<legacyNullReferenceExceptionPolicy enabled = "1"/>  

Конструкторы

AccessViolationException() AccessViolationException() AccessViolationException() AccessViolationException()

Инициализирует новый экземпляр класса AccessViolationException с системным сообщением, содержащим описание ошибки.Initializes a new instance of the AccessViolationException class with a system-supplied message that describes the error.

AccessViolationException(SerializationInfo, StreamingContext) AccessViolationException(SerializationInfo, StreamingContext) AccessViolationException(SerializationInfo, StreamingContext) AccessViolationException(SerializationInfo, StreamingContext)

Инициализирует новый экземпляр класса AccessViolationException с сериализованными данными.Initializes a new instance of the AccessViolationException class with serialized data.

AccessViolationException(String) AccessViolationException(String) AccessViolationException(String) AccessViolationException(String)

Инициализирует новый экземпляр класса AccessViolationException с использованием заданного сообщения, содержащего описание ошибки.Initializes a new instance of the AccessViolationException class with a specified message that describes the error.

AccessViolationException(String, Exception) AccessViolationException(String, Exception) AccessViolationException(String, Exception) AccessViolationException(String, Exception)

Инициализирует новый экземпляр класса AccessViolationException указанным сообщением об ошибке и ссылкой на внутреннее исключение, вызвавшее данное исключение.Initializes a new instance of the AccessViolationException class with a specified error message and a reference to the inner exception that is the cause of this exception.

Свойства

Data Data Data Data

Возвращает коллекцию пар "ключ-значение", предоставляющих дополнительную заданную пользователем информацию об исключении.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Inherited from Exception)
HelpLink HelpLink HelpLink HelpLink

Возвращает или задает ссылку на файл справки, связанный с этим исключением.Gets or sets a link to the help file associated with this exception.

(Inherited from Exception)
HResult HResult HResult HResult

Возвращает или задает HRESULT — кодированное числовое значение, присвоенное определенному исключению.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Inherited from Exception)
InnerException InnerException InnerException InnerException

Возвращает экземпляр объекта Exception, который вызвал текущее исключение.Gets the Exception instance that caused the current exception.

(Inherited from Exception)
Message Message Message Message

Возвращает сообщение, описывающее текущее исключение.Gets a message that describes the current exception.

(Inherited from Exception)
Source Source Source Source

Возвращает или задает имя приложения или объекта, вызывавшего ошибку.Gets or sets the name of the application or the object that causes the error.

(Inherited from Exception)
StackTrace StackTrace StackTrace StackTrace

Получает строковое представление непосредственных кадров в стеке вызова.Gets a string representation of the immediate frames on the call stack.

(Inherited from Exception)
TargetSite TargetSite TargetSite TargetSite

Возвращает метод, создавший текущее исключение.Gets the method that throws the current exception.

(Inherited from Exception)

Методы

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetBaseException() GetBaseException() GetBaseException() GetBaseException()

При переопределении в производном классе возвращает исключение Exception, которое является корневой причиной одного или нескольких последующих исключений.When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.

(Inherited from Exception)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext)

При переопределении в производном классе задает сведения об исключении для SerializationInfo.When overridden in a derived class, sets the SerializationInfo with information about the exception.

(Inherited from Exception)
GetType() GetType() GetType() GetType()

Возвращает тип текущего экземпляра в среде выполнения.Gets the runtime type of the current instance.

(Inherited from Exception)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Создает и возвращает строковое представление текущего исключения.Creates and returns a string representation of the current exception.

(Inherited from Exception)

События

SerializeObjectState SerializeObjectState SerializeObjectState SerializeObjectState

Возникает, когда исключение сериализовано для создания объекта состояния исключения, содержащего сериализованные данные об исключении.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Inherited from Exception)

Применяется к

Дополнительно