AccessViolationException Classe

Définition

Exception levée lors d’une tentative de lecture ou d’écriture dans une mémoire protégée.The exception that is thrown when there is an attempt to read or write protected memory.

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 en code non managé ou unsafe lorsque le code tente de lire ou d’écrire dans une mémoire qui n’a pas été allouée, ou à laquelle il n’a pas accès.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. Cela se produit généralement lorsqu’un pointeur a une valeur incorrecte.This usually occurs because a pointer has a bad value. 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.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. Ainsi, les violations d’accès indiquent presque toujours des erreurs de programmation graves.Thus, access violations almost always indicate serious programming errors. AccessViolationExceptionIdentifie clairement ces erreurs graves.An AccessViolationException clearly identifies these serious errors.

Dans les programmes constitués entièrement de code managé vérifiable, toutes les références sont valides ou null, et les violations d’accès sont impossibles.In programs consisting entirely of verifiable managed code, all references are either valid or null, and access violations are impossible. Toute opération qui tente de référencer une référence null dans du code vérifiable lève une NullReferenceException exception.Any operation that attempts to reference a null reference in verifiable code throws a NullReferenceException exception. Un AccessViolationException se produit uniquement quand le code managé vérifiable interagit avec du code non managé ou avec du code managé unsafe.An AccessViolationException occurs only when verifiable managed code interacts with unmanaged code or with unsafe managed code.

Dépannage des exceptions AccessViolationExceptionTroubleshooting AccessViolationException exceptions

Une AccessViolationException exception peut se produire uniquement dans du code managé non sécurisé ou lorsque le code managé vérifiable interagit avec du code non managé :An AccessViolationException exception can occur only in unsafe managed code or when verifiable managed code interacts with unmanaged code:

  • Une violation d’accès qui se produit dans du code managé non sécurisé peut être exprimée sous NullReferenceException la forme d’une exception ou d’une AccessViolationException exception, en fonction de la plateforme.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.

  • Une violation d’accès dans du code non managé qui se propage jusqu’au code managé est toujours encapsulée dans une AccessViolationException exception.An access violation in unmanaged code that bubbles up to managed code is always wrapped in an AccessViolationException exception.

Dans les deux cas, vous pouvez identifier et corriger la cause de l' AccessViolationException exception comme suit :In either case, you can identify and correct the cause of the AccessViolationException exception as follows:

Assurez-vous que la mémoire à laquelle vous tentez d'accéder a été allouée.Make sure that the memory that you are attempting to access has been allocated. Une AccessViolationException exception est toujours levé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.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.

La gestion automatique de la mémoire est un des services que le Common Language Runtime fournit.Automatic memory management is one of the services that the common language runtime provides. Si le code managé fournit les mêmes fonctionnalités que votre code non managé, vous pouvez passer à du code managé pour tirer parti de cette fonctionnalité.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. Pour plus d'informations, consultez Automatic Memory Management.For more information, see Automatic Memory Management.

Assurez-vous que la mémoire à laquelle vous tentez d'accéder n'a pas été endommagée.Make sure that the memory that you are attempting to access has not been corrupted. 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.If several read or write operations have occurred through bad pointers, memory may be corrupted. Cela se produit généralement lors de la lecture ou de l’écriture d’adresses en dehors d’une mémoire tampon prédéfinie.This typically occurs when reading or writing to addresses outside of a predefined buffer.

AccessViolationException et blocs try/catchAccessViolationException and try/catch blocks

À partir de .NET Framework 4, les AccessViolationException exceptions levées par l’Common Language Runtime ne sont pas gérées par l' catch instruction dans un gestionnaire d’exceptions structurées si l’exception se produit en dehors de la mémoire réservée par le Common Language Runtime.Starting with .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. Pour gérer une telle AccessViolationException exception, appliquez l' HandleProcessCorruptedStateExceptionsAttribute attribut à la méthode dans laquelle l’exception est levée.To handle such an AccessViolationException exception, apply the HandleProcessCorruptedStateExceptionsAttribute attribute to the method in which the exception is thrown. Cette modification n’affecte pas AccessViolationException les exceptions levées par le code utilisateur, qui peuvent continuer d’être interceptées par une catch instruction.This change does not affect AccessViolationException exceptions thrown by user code, which can continue to be caught by a catch statement. Pour le code écrit pour des versions antérieures de .NET Framework que vous souhaitez recompiler et exécuter sans modification sur .NET Framework 4, vous pouvez ajouter l' <legacyCorruptedStateExceptionsPolicy> élément au fichier de configuration de votre application.For code written for previous versions of .NET Framework that you want to recompile and run without modification on .NET Framework 4, you can add the <legacyCorruptedStateExceptionsPolicy> element to your app's configuration file. Notez que vous pouvez également recevoir la notification des exceptions si vous avez défini un gestionnaire pour l' AppDomain.FirstChanceException AppDomain.UnhandledException événement ou.Note that you can also receive notification of the exceptions if you have defined a handler for the AppDomain.FirstChanceException or AppDomain.UnhandledException event.

Informations sur la versionVersion Information

Cette exception est levée sur .NET Framework 2,0 et versions ultérieures.This exception is thrown on .NET Framework 2.0 and later versions. Dans les versions antérieures de .NET Framework, une violation d’accès dans du code non managé ou du code managé non sécurisé est représentée par un NullReferenceException dans du code managé.In earlier versions of .NET Framework, an access violation in unmanaged code or unsafe managed code is represented by a NullReferenceException in managed code. Une NullReferenceException exception est également levée quand une référence null est déréférencée dans du code managé vérifiable, une occurrence qui n’implique pas d’altération des données, et il n’existe aucun moyen de faire la distinction entre les deux situations dans les versions 1,0 ou 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.

Les administrateurs peuvent autoriser les applications sélectionnées à revenir au comportement de .NET Framework version 1,1.Administrators can allow selected applications to revert to the behavior of .NET Framework version 1.1. Placez la ligne suivante dans la section de l' < > élément Runtime du fichier de configuration de l’application :Place the following line in the <runtime> Element section of the configuration file for the application:

<legacyNullReferenceExceptionPolicy enabled = "1"/>

Constructeurs

AccessViolationException()

Initialise une nouvelle instance de la classe AccessViolationException avec un message fourni par le système qui décrit l'erreur.Initializes a new instance of the AccessViolationException class with a system-supplied message that describes the error.

AccessViolationException(SerializationInfo, StreamingContext)

Initialise une nouvelle instance de la classe AccessViolationException avec des données sérialisées.Initializes a new instance of the AccessViolationException class with serialized data.

AccessViolationException(String)

Initialise une nouvelle instance de la classe AccessViolationException avec un message spécifié qui décrit l'erreur.Initializes a new instance of the AccessViolationException class with a specified message that describes the error.

AccessViolationException(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.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.

Propriétés

Data

Obtient une collection de paires clé/valeur qui fournissent des informations définies par l'utilisateur supplémentaires sur l'exception.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Hérité de Exception)
HelpLink

Obtient ou définit un lien vers le fichier d'aide associé à cette exception.Gets or sets a link to the help file associated with this exception.

(Hérité de Exception)
HResult

Obtient ou définit HRESULT, valeur numérique codée qui est assignée à une exception spécifique.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Hérité de Exception)
InnerException

Obtient l'instance Exception qui a provoqué l'exception actuelle.Gets the Exception instance that caused the current exception.

(Hérité de Exception)
Message

Obtient un message qui décrit l'exception active.Gets a message that describes the current exception.

(Hérité de Exception)
Source

Obtient ou définit le nom de l'application ou de l'objet qui est à l'origine de l'erreur.Gets or sets the name of the application or the object that causes the error.

(Hérité de Exception)
StackTrace

Obtient une représentation sous forme de chaîne des frames immédiats sur la pile des appels.Gets a string representation of the immediate frames on the call stack.

(Hérité de Exception)
TargetSite

Obtient la méthode qui lève l'exception actuelle.Gets the method that throws the current exception.

(Hérité de Exception)

Méthodes

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.Determines whether the specified object is equal to the current object.

(Hérité de Object)
GetBaseException()

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.When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.

(Hérité de Exception)
GetHashCode()

Fait office de fonction de hachage par défaut.Serves as the default hash function.

(Hérité de Object)
GetObjectData(SerializationInfo, StreamingContext)

En cas de substitution dans une classe dérivée, définit SerializationInfo avec des informations sur l'exception.When overridden in a derived class, sets the SerializationInfo with information about the exception.

(Hérité de Exception)
GetType()

Obtient le type au moment de l'exécution de l'instance actuelle.Gets the runtime type of the current instance.

(Hérité de Exception)
MemberwiseClone()

Crée une copie superficielle du Object actuel.Creates a shallow copy of the current Object.

(Hérité de Object)
ToString()

Crée et retourne une chaîne représentant l'exception actuelle.Creates and returns a string representation of the current exception.

(Hérité de Exception)

Événements

SerializeObjectState

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.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Hérité de Exception)

S’applique à