AccessViolationException Clase

Definición

Excepción que se produce cuando se intenta leer o escribir memoria protegida.

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
Herencia
AccessViolationException
Atributos

Comentarios

Una infracción de acceso se produce en código no administrado o no seguro cuando el código intenta leer o escribir en la memoria que no se ha asignado o al que no tiene acceso. Esto suele ocurrir porque un puntero tiene un valor incorrecto. No todas las lecturas o escrituras a través de punteros incorrectos conducen a infracciones de acceso, por lo que una infracción de acceso suele indicar que se han producido varias lecturas o escrituras a través de punteros incorrectos y que la memoria podría estar dañada. Por lo tanto, las infracciones de acceso casi siempre indican errores de programación graves. Una AccessViolationException claramente identifica estos errores graves.

En los programas que constan completamente de código administrado verificable, todas las referencias son válidas o nulas, y las infracciones de acceso son imposibles. Cualquier operación que intente hacer referencia a una referencia nula en el código verificable produce una NullReferenceException excepción. Un AccessViolationException solo se produce cuando el código administrado verificable interactúa con el código no administrado o con código administrado no seguro.

Solución de problemas de excepciones de AccessViolationException

Una AccessViolationException excepción solo puede producirse en código administrado no seguro o cuando el código administrado verificable interactúa con código no administrado:

  • Una infracción de acceso que se produce en código administrado no seguro se puede expresar como una NullReferenceException excepción o una AccessViolationException excepción, en función de la plataforma.
  • Una infracción de acceso en código no administrado que sube al código administrado siempre se encapsula en una excepción AccessViolationException.

En cualquier caso, puede identificar y corregir la causa de la excepción de la AccessViolationException siguiente manera:

  • Asegúrese de que se ha asignado la memoria a la que intenta acceder. Una AccessViolationException excepción siempre se produce por un intento de acceder a la memoria protegida, es decir, para acceder a la memoria que no está asignada o que no es propiedad de un proceso.

    La administración automática de memoria es uno de los servicios que proporciona el entorno de ejecución de .NET. Si el código administrado proporciona la misma funcionalidad que el código no administrado, considere la posibilidad de pasar al código administrado para aprovechar esta funcionalidad. Para obtener más información, consulte Administración automática de memoria.

  • Asegúrese de que la memoria a la que está intentando acceder no se ha dañado. Si se han producido varias operaciones de lectura o escritura a través de punteros incorrectos, es posible que la memoria esté dañada. Esto suele ocurrir al leer o escribir en direcciones fuera de un búfer predefinido.

AccessViolationException y bloques de 'try/catch'

AccessViolationException Las excepciones producidas por el entorno de ejecución de .NET no se controlan mediante la catch instrucción en un controlador de excepciones estructurado si la excepción se produce fuera de la memoria reservada por el tiempo de ejecución.

Caution

El atributo HandleProcessCorruptedStateExceptions está obsoleto en las versiones actuales de .NET. No se admite la recuperación del estado del proceso dañado: no se admiten excepciones y el atributo, si está presente, se omite.

Constructores

Nombre Description
AccessViolationException()

Inicializa una nueva instancia de la AccessViolationException clase con un mensaje proporcionado por el sistema que describe el error.

AccessViolationException(SerializationInfo, StreamingContext)
Obsoletos.

Inicializa una nueva instancia de la AccessViolationException clase con datos serializados.

AccessViolationException(String, Exception)

Inicializa una nueva instancia de la AccessViolationException clase con un mensaje de error especificado y una referencia a la excepción interna que es la causa de esta excepción.

AccessViolationException(String)

Inicializa una nueva instancia de la AccessViolationException clase con un mensaje especificado que describe el error.

Propiedades

Nombre Description
Data

Obtiene una colección de pares clave-valor que proporcionan información adicional definida por el usuario sobre la excepción.

(Heredado de Exception)
HelpLink

Obtiene o establece un vínculo al archivo de ayuda asociado a esta excepción.

(Heredado de Exception)
HResult

Obtiene o establece HRESULT, un valor numérico codificado que se asigna a una excepción específica.

(Heredado de Exception)
InnerException

Obtiene la Exception instancia que provocó la excepción actual.

(Heredado de Exception)
Message

Obtiene un mensaje que describe la excepción actual.

(Heredado de Exception)
Source

Obtiene o establece el nombre de la aplicación o el objeto que provoca el error.

(Heredado de Exception)
StackTrace

Obtiene una representación de cadena de los fotogramas inmediatos en la pila de llamadas.

(Heredado de Exception)
TargetSite

Obtiene el método que produce la excepción actual.

(Heredado de Exception)

Métodos

Nombre Description
Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

(Heredado de Object)
GetBaseException()

Cuando se reemplaza en una clase derivada, devuelve la Exception causa principal de una o varias excepciones posteriores.

(Heredado de Exception)
GetHashCode()

Actúa como función hash predeterminada.

(Heredado de Object)
GetObjectData(SerializationInfo, StreamingContext)
Obsoletos.

Cuando se reemplaza en una clase derivada, establece con SerializationInfo información sobre la excepción.

(Heredado de Exception)
GetType()

Obtiene el tipo de tiempo de ejecución de la instancia actual.

(Heredado de Exception)
MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
ToString()

Crea y devuelve una representación de cadena de la excepción actual.

(Heredado de Exception)

Eventos

Nombre Description
SerializeObjectState
Obsoletos.

Se produce cuando se serializa una excepción para crear un objeto de estado de excepción que contiene datos serializados sobre la excepción.

(Heredado de Exception)

Se aplica a

Consulte también