Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

AccessViolationException classe

 

Date de publication : août 2016

Exception levée lors d’une tentative de lecture ou d’écriture dans une mémoire protégée.

Espace de noms:   System
Assembly:  mscorlib (dans mscorlib.dll)

System.Object
  System.Exception
    System.SystemException
      System.AccessViolationException

[SerializableAttribute]
[ComVisibleAttribute(true)]
public class AccessViolationException : SystemException

NomDescription
System_CAPS_pubmethodAccessViolationException()

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

System_CAPS_protmethodAccessViolationException(SerializationInfo, StreamingContext)

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

System_CAPS_pubmethodAccessViolationException(String)

Initialise une nouvelle instance de la classe AccessViolationException avec un message spécifié décrivant l'erreur.

System_CAPS_pubmethodAccessViolationException(String, Exception)

Initialise une nouvelle instance de la classe AccessViolationException avec un message d'erreur spécifié et une référence à l'exception interne ayant provoqué cette exception.

NomDescription
System_CAPS_pubpropertyData

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.)

System_CAPS_pubpropertyHelpLink

Obtient ou définit un lien vers le fichier d'aide associé à cette exception.(Hérité de Exception.)

System_CAPS_pubpropertyHResult

Obtient ou définit HRESULT, valeur numérique codée qui est assignée à une exception spécifique.(Hérité de Exception.)

System_CAPS_pubpropertyInnerException

Obtient l'instance Exception qui a provoqué l'exception actuelle.(Hérité de Exception.)

System_CAPS_pubpropertyMessage

Obtient un message qui décrit l'exception actuelle.(Hérité de Exception.)

System_CAPS_pubpropertySource

Obtient ou définit le nom de l'application ou de l'objet qui est à l'origine de l'erreur.(Hérité de Exception.)

System_CAPS_pubpropertyStackTrace

Obtient une représentation sous forme de chaîne des objets immédiats sur la pile des appels. (Hérité de Exception.)

System_CAPS_pubpropertyTargetSite

Obtient la méthode qui lève l'exception actuelle.(Hérité de Exception.)

NomDescription
System_CAPS_pubmethodEquals(Object)

Détermine si l'objet spécifié est identique à l'objet actuel.(Hérité de Object.)

System_CAPS_protmethodFinalize()

Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de nettoyage avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.)

System_CAPS_pubmethodGetBaseException()

En cas de substitution dans une classe dérivée, retourne la Exception qui est à l'origine d'une ou de plusieurs exceptions ultérieures.(Hérité de Exception.)

System_CAPS_pubmethodGetHashCode()

Fait office de fonction de hachage par défaut.(Hérité de Object.)

System_CAPS_pubmethodGetObjectData(SerializationInfo, StreamingContext)

En cas de substitution dans une classe dérivée, définit SerializationInfo avec des informations sur l'exception.(Hérité de Exception.)

System_CAPS_pubmethodGetType()

Obtient le type au moment de l'exécution de l'instance actuelle.(Hérité de Exception.)

System_CAPS_protmethodMemberwiseClone()

Crée une copie superficielle du Object actuel.(Hérité de Object.)

System_CAPS_pubmethodToString()

Crée et retourne une chaîne représentant l'exception actuelle.(Hérité de Exception.)

NomDescription
System_CAPS_proteventSerializeObjectState

Se produit quand une exception est sérialisée pour créer un objet d'état d'exception qui contient des données sérialisées concernant l'exception.(Hérité de Exception.)

Une violation d’accès se produit dans le code non managé ou unsafe lorsque le code tente de lire ou écrire dans la mémoire qui n’a pas été allouée, ou vers lequel il n’a pas accès. Cela se produit généralement parce que le pointeur a une valeur incorrecte. Toutes les opérations de lecture ou d'écriture avec des pointeurs erronés ne provoquent pas des violations d'accès, une violation d'accès indique donc habituellement que plusieurs opérations de lecture ou d'écriture ont été exécutées par le biais de pointeurs erronés et que cette mémoire est peut-être endommagée. Par conséquent, les violations d’accès indiquent presque toujours des erreurs de programmation graves. Une AccessViolationException identifie clairement ces erreurs graves.

Dans les programmes entièrement composée 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 null dans du code vérifiable lève une NullReferenceException exception. Un AccessViolationException se produit uniquement lorsque le code managé vérifiable interagit avec le code non managé ou avec du code managé unsafe.

Un AccessViolationException exception peut se produire uniquement dans du code managé unsafe ou lorsque gérés vérifiable code interagit avec le code non managé :

  • Une violation d’accès qui se produit dans du code managé unsafe peut être exprimée comme une NullReferenceException exception ou un AccessViolationException exception, selon la plateforme.

  • Une violation d’accès dans le code non managé qui se propage au code managé est toujours encapsulée dans une AccessViolationException exception.

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

Assurez-vous que la mémoire à laquelle vous tentez d'accéder a été allouée.

Un AccessViolationException exception est toujours renvoyée par une tentative d’accéder à une mémoire protégée, qui est, pour accéder à la mémoire qui n’est pas allouée ou qui n’est pas détenu par un processus.

La gestion automatique de la mémoire est un des services que le Common Language Runtime fournit. Si le code managé fournit les mêmes fonctionnalités que votre code unmanagede, vous pouvez souhaiter passer à du code managé pour tirer parti de cette fonctionnalité. Pour plus d'informations, consultez Gestion automatique de la mémoire.

Assurez-vous que la mémoire à laquelle vous tentez d'accéder n'a pas été endommagée.

Si plusieurs opérations de lecture et d'écriture ont été effectuées par le biais de pointeurs erronés, la mémoire peut être endommagée. Cela se produit généralement lors de la lecture ou écriture aux adresses en dehors d’une mémoire tampon prédéfinie.

En commençant par le .NET Framework 4, AccessViolationException les exceptions levées par le common language runtime ne sont pas gérées par la catch instruction dans un gestionnaire d’exceptions structuré si l’exception se produit en dehors de la mémoire réservée par le common language runtime. Pour gérer un AccessViolationException exception, vous devez appliquer le HandleProcessCorruptedStateExceptionsAttribute d’attribut à la méthode dans laquelle l’exception est levée. Cette modification n’affecte pas AccessViolationException les exceptions levées par le code utilisateur, qui peut continuer à être interceptée par un catch instruction. Pour le code écrit pour les versions antérieures du .NET Framework que vous souhaitez recompiler et s’exécuter sans modification le .NET Framework 4, vous pouvez ajouter la <legacyCorruptedStateExceptionsPolicy> élément au fichier de configuration de votre application.</legacyCorruptedStateExceptionsPolicy> Notez que vous pouvez également recevoir la notification des exceptions si vous avez défini un gestionnaire pour le AppDomain.FirstChanceException ou AppDomain.UnhandledException événement.

Cette exception est levée dans le .NET Framework 2.0 et versions ultérieures. Dans les versions antérieures du .NET Framework, une violation d’accès dans le code non managé ou du code managé unsafe est représentée par un NullReferenceException dans du code managé. A NullReferenceException est également levée lors de la suppression d’une référence null dans du code managé vérifiable, une situation qui n’implique pas la corruption des données, et il n’existe aucun moyen de faire la distinction entre les deux cas dans les versions 1.0 ou 1.1.

Les administrateurs peuvent autoriser des applications sélectionnées rétablir le comportement de la version 1.1 du .NET Framework. Placez la ligne suivante dans la <runtime>, élément section du fichier de configuration de l’application :

<legacyNullReferenceExceptionPolicy enabled = "1"/>

.NET Framework
Disponible depuis 2.0
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.0

Tous les membres statiques publics ( Shared en Visual Basic) de ce type sont thread-safe. Les membres d’instance n’ont pas la garantie d’être thread-safe.

Retour au début
Afficher: