AccessViolationException Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
- 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) |