AccessViolationException Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Die Ausnahme, die ausgelöst wird, wenn versucht wird, geschützten Speicher zu lesen oder zu schreiben.
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
- Vererbung
- Attribute
Hinweise
Ein Zugriffsverstoß tritt in nicht verwalteten oder unsicheren Code auf, wenn der Code versucht, nicht zugewiesenen Speicher zu lesen oder in den Speicher zu schreiben, auf den er keinen Zugriff hat. Dies tritt in der Regel auf, da ein Zeiger einen ungültigen Wert aufweist. Nicht alle Lesevorgänge oder Schreibvorgänge durch fehlerhafte Zeiger führen zu Zugriffsverletzungen, daher weist eine Zugriffsverletzung in der Regel darauf hin, dass mehrere Lese- oder Schreibvorgänge durch fehlerhafte Zeiger aufgetreten sind und dass der Speicher beschädigt sein könnte. So deuten Zugriffsverletzungen fast immer auf schwerwiegende Programmierfehler hin. Eine AccessViolationException identifiziert diese schwerwiegenden Fehler eindeutig.
In Programmen, die vollständig aus überprüfbarem verwaltetem Code bestehen, sind alle Verweise entweder gültig oder null, und Zugriffsverletzungen sind unmöglich. Jeder Vorgang, der versucht, auf einen Nullverweis im nachweisbaren Code zu verweisen, löst eine NullReferenceException Ausnahme aus. Ein AccessViolationException Ereignis tritt nur auf, wenn überprüfbarer verwalteter Code mit nicht verwaltetem Code oder mit unsicherem verwaltetem Code interagiert wird.
Fehlerbehebung von AccessViolationException-Ausnahmen
Eine AccessViolationException Ausnahme kann nur in unsicherem verwaltetem Code auftreten oder wenn überprüfbarer verwalteter Code mit nicht verwaltetem Code interagiert wird:
- Eine Zugriffsverletzung, die in unsicherem verwaltetem Code auftritt, kann je nach Plattform entweder als NullReferenceException Ausnahme oder als AccessViolationException Ausnahme ausgedrückt werden.
- Eine Zugriffsverletzung in nicht verwaltetem Code, die bis zu verwaltetem Code an die Oberfläche dringt, wird immer in eine AccessViolationException Ausnahme eingeschlossen.
In beiden Fällen können Sie die Ursache der AccessViolationException Ausnahme wie folgt identifizieren und korrigieren:
Stellen Sie sicher, dass der Arbeitsspeicher, auf den Sie zugreifen möchten, zugewiesen wurde. Eine AccessViolationException Ausnahme wird immer ausgelöst, indem versucht wird, auf geschützten Speicher zuzugreifen, d. h. auf den nicht zugeordneten Speicher zuzugreifen oder der nicht im Besitz eines Prozesses ist.
Die automatische Speicherverwaltung ist einer der Dienste, die von der .NET-Laufzeit bereitgestellt werden. Wenn verwalteter Code die gleiche Funktionalität wie Ihr nicht verwalteter Code bietet, sollten Sie in Betracht ziehen, zu verwaltetem Code zu wechseln, um diese Funktionalität nutzen zu können. Weitere Informationen finden Sie unter "Automatische Speicherverwaltung".
Stellen Sie sicher, dass der Arbeitsspeicher, auf den Sie zugreifen möchten, nicht beschädigt wurde. Wenn mehrere Lese- oder Schreibvorgänge durch fehlerhafte Zeiger aufgetreten sind, ist der Arbeitsspeicher möglicherweise beschädigt. Dies tritt in der Regel beim Lesen oder Schreiben in Adressen außerhalb eines vordefinierten Puffers auf.
AccessViolationException und try/catch-Blöcke
AccessViolationException Ausnahmen, die von der .NET-Laufzeit ausgelöst werden, werden nicht von der catch Anweisung in einem strukturierten Ausnahmehandler behandelt, wenn die Ausnahme außerhalb des von der Laufzeit reservierten Arbeitsspeichers auftritt.
Caution
Das HandleProcessCorruptedStateExceptions-Attribut ist in den aktuellen .NET-Versionen veraltet. Die Wiederherstellung von beschädigten Prozessstatus-Ausnahmen wird nicht unterstützt, und das Attribut, falls vorhanden, wird ignoriert.
Konstruktoren
| Name | Beschreibung |
|---|---|
| AccessViolationException() |
Initialisiert eine neue Instanz der AccessViolationException Klasse mit einer vom System bereitgestellten Meldung, die den Fehler beschreibt. |
| AccessViolationException(SerializationInfo, StreamingContext) |
Veraltet.
Initialisiert eine neue Instanz der AccessViolationException Klasse mit serialisierten Daten. |
| AccessViolationException(String, Exception) |
Initialisiert eine neue Instanz der AccessViolationException Klasse mit einer angegebenen Fehlermeldung und einem Verweis auf die innere Ausnahme, die die Ursache dieser Ausnahme ist. |
| AccessViolationException(String) |
Initialisiert eine neue Instanz der AccessViolationException Klasse mit einer angegebenen Meldung, die den Fehler beschreibt. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Data |
Ruft eine Auflistung von Schlüssel-Wert-Paaren ab, die zusätzliche benutzerdefinierte Informationen zur Ausnahme bereitstellen. (Geerbt von Exception) |
| HelpLink |
Dient zum Abrufen oder Festlegen eines Links zur Hilfedatei, die dieser Ausnahme zugeordnet ist. (Geerbt von Exception) |
| HResult |
Dient zum Abrufen oder Festlegen von HRESULT, einem codierten numerischen Wert, der einer bestimmten Ausnahme zugewiesen ist. (Geerbt von Exception) |
| InnerException |
Ruft die Exception Instanz ab, die die aktuelle Ausnahme verursacht hat. (Geerbt von Exception) |
| Message |
Ruft eine Nachricht ab, die die aktuelle Ausnahme beschreibt. (Geerbt von Exception) |
| Source |
Dient zum Abrufen oder Festlegen des Namens der Anwendung oder des Objekts, das den Fehler verursacht. (Geerbt von Exception) |
| StackTrace |
Ruft eine Zeichenfolgendarstellung der unmittelbaren Frames im Aufrufstapel ab. (Geerbt von Exception) |
| TargetSite |
Ruft die Methode ab, die die aktuelle Ausnahme auslöst. (Geerbt von Exception) |
Methoden
| Name | Beschreibung |
|---|---|
| Equals(Object) |
Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht. (Geerbt von Object) |
| GetBaseException() |
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird die Exception Ursache einer oder mehrerer nachfolgenden Ausnahmen zurückgegeben. (Geerbt von Exception) |
| GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
| GetObjectData(SerializationInfo, StreamingContext) |
Veraltet.
Wenn sie in einer abgeleiteten Klasse überschrieben wird, werden die SerializationInfo Informationen zur Ausnahme festgelegt. (Geerbt von Exception) |
| GetType() |
Ruft den Laufzeittyp der aktuellen Instanz ab. (Geerbt von Exception) |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| ToString() |
Erstellt und gibt eine Zeichenfolgendarstellung der aktuellen Ausnahme zurück. (Geerbt von Exception) |
Ereignisse
| Name | Beschreibung |
|---|---|
| SerializeObjectState |
Veraltet.
Tritt auf, wenn eine Ausnahme serialisiert wird, um ein Ausnahmestatusobjekt zu erstellen, das serialisierte Daten zu der Ausnahme enthält. (Geerbt von Exception) |