AccessViolationException Classe

Définition

Exception levée lorsqu’il existe une tentative de lecture ou d’écriture de mémoire protégée.

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
Héritage
AccessViolationException
Attributs

Remarques

Une violation d’accès se produit dans du code non managé ou non sécurisé lorsque le code tente de lire ou d’écrire dans la mémoire qui n’a pas été allouée, ou auquel il n’a pas accès. Cela se produit généralement parce qu’un pointeur a une valeur incorrecte. Toutes les lectures ou écritures par le biais de pointeurs incorrects n’entraînent pas des violations d'accès, donc une violation d'accès indique généralement que plusieurs lectures ou écritures se sont produites via des pointeurs incorrects et que la mémoire peut être endommagée. Ainsi, les violations d’accès indiquent presque toujours des erreurs de programmation graves. Un AccessViolationException identifie clairement ces erreurs graves.

Dans les programmes qui se composent entièrement de code managé vérifiable, toutes les références sont valides ou null, et les violations d’accès sont impossibles. Toute opération qui tente de référencer une référence nulle dans le code vérifiable lève une NullReferenceException exception. Une AccessViolationException survient uniquement lorsque le code managé vérifiable interagit avec du code non managé ou avec du code managé dangereux.

Résoudre les problèmes d’exceptions AccessViolationException

Une AccessViolationException exception peut se produire uniquement dans le code managé non sécurisé ou lorsque le code managé vérifiable interagit avec du code non managé :

  • Une violation d’accès qui se produit dans du code managé non sécurisé peut être exprimée sous la forme d’une exception ou d’une NullReferenceExceptionAccessViolationException exception, selon la plateforme.
  • Une violation d’accès dans du code non managé qui remonte jusqu’au code managé est toujours emballée dans une AccessViolationException exception.

Dans les deux cas, vous pouvez identifier et corriger la cause de l’exception AccessViolationException comme suit :

  • Vérifiez que la mémoire que vous tentez d’accéder a été allouée. Une AccessViolationException exception est toujours générée par une tentative d'accès à la mémoire protégée, c'est-à-dire pour accéder à la mémoire qui n'est pas allouée ou qui n’appartient pas à un processus.

    La gestion automatique de la mémoire est l’un des services fournis par le runtime .NET. Si le code managé fournit les mêmes fonctionnalités que votre code non managé, envisagez de passer au code managé pour tirer parti de cette fonctionnalité. Pour plus d’informations, consultez Gestion automatique de la mémoire.

  • Vérifiez que la mémoire que vous tentez d’accéder n’a pas été endommagée. Si plusieurs opérations de lecture ou d’écriture se sont produites via des pointeurs incorrects, la mémoire peut être endommagée. Cela se produit généralement lors de la lecture ou de l’écriture à des adresses au-delà d’une mémoire tampon prédéfinie.

AccessViolationException et blocs try/catch

AccessViolationException Les exceptions levées par le runtime .NET ne sont pas gérées par l’instruction catch dans un gestionnaire d’exceptions structurées si l’exception se produit en dehors de la mémoire réservée par le runtime.

Avertissement

L’attribut HandleProcessCorruptedStateExceptions est obsolète dans les versions actuelles de .NET. La récupération à partir des exceptions d'état de processus corrompu n’est pas prise en charge, et l’attribut, le cas échéant, n’est pas pris en compte.

Constructeurs

Nom Description
AccessViolationException()

Initialise une nouvelle instance de la AccessViolationException classe avec un message fourni par le système qui décrit l’erreur.

AccessViolationException(SerializationInfo, StreamingContext)
Obsolète.

Initialise une nouvelle instance de la classe AccessViolationException avec des données sérialisées.

AccessViolationException(String, Exception)

Initialise une nouvelle instance de la AccessViolationException classe avec un message d’erreur spécifié et une référence à l’exception interne qui est la cause de cette exception.

AccessViolationException(String)

Initialise une nouvelle instance de la AccessViolationException classe avec un message spécifié qui décrit l’erreur.

Propriétés

Nom Description
Data

Obtient une collection de paires clé/valeur qui fournissent des informations supplémentaires définies par l’utilisateur sur l’exception.

(Hérité de Exception)
HelpLink

Obtient ou définit un lien vers le fichier d’aide associé à cette exception.

(Hérité de Exception)
HResult

Obtient ou définit HRESULT, valeur numérique codée affectée à une exception spécifique.

(Hérité de Exception)
InnerException

Obtient l’instance Exception qui a provoqué l’exception actuelle.

(Hérité de Exception)
Message

Obtient un message qui décrit l’exception actuelle.

(Hérité de Exception)
Source

Obtient ou définit le nom de l’application ou de l’objet qui provoque l’erreur.

(Hérité de Exception)
StackTrace

Obtient une représentation sous forme de chaîne des images immédiates sur la pile des appels.

(Hérité de Exception)
TargetSite

Obtient la méthode qui lève l’exception actuelle.

(Hérité de Exception)

Méthodes

Nom Description
Equals(Object)

Détermine si l’objet spécifié est égal à l’objet actuel.

(Hérité de Object)
GetBaseException()

En cas de substitution dans une classe dérivée, retourne la Exception cause racine d’une ou plusieurs exceptions ultérieures.

(Hérité de Exception)
GetHashCode()

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetObjectData(SerializationInfo, StreamingContext)
Obsolète.

En cas de substitution dans une classe dérivée, définit l'SerializationInfo avec des informations sur l’exception.

(Hérité de Exception)
GetType()

Obtient le type d’exécution de l’instance actuelle.

(Hérité de Exception)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
ToString()

Crée et retourne une représentation sous forme de chaîne de l’exception actuelle.

(Hérité de Exception)

Événements

Nom Description
SerializeObjectState
Obsolète.

Se produit lorsqu’une exception est sérialisée pour créer un objet d’état d’exception qui contient des données sérialisées sur l’exception.

(Hérité de Exception)

S’applique à

Voir aussi