AccessViolationException Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Undantaget som utlöses när det görs ett försök att läsa eller skriva skyddat minne.
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
- Arv
- Attribut
Kommentarer
En åtkomstöverträdelse uppstår i ohanterad eller osäker kod när koden försöker läsa eller skriva till minne som inte har allokerats eller som den inte har åtkomst till. Detta beror vanligtvis på att en pekare har ett felaktigt värde. Inte alla läsningar eller skrivningar via dåliga pekare leder till åtkomstöverträdelser, så en åtkomstöverträdelse indikerar vanligtvis att flera läsningar eller skrivningar har inträffat via dåliga pekare och att minnet kan vara skadat. Därför indikerar åtkomstöverträdelser nästan alltid allvarliga programmeringsfel. En AccessViolationException identifierar tydligt dessa allvarliga fel.
I program som helt består av verifierbar hanterad kod är alla referenser antingen giltiga eller null och åtkomstöverträdelser är omöjliga. Alla åtgärder som försöker referera till en null-referens i verifierbar kod utlöser ett NullReferenceException undantag. En AccessViolationException inträffar endast när verifierbar hanterad kod interagerar med ohanterad kod eller med osäker hanterad kod.
Felsöka AccessViolationException-undantag
Ett AccessViolationException undantag kan endast inträffa i osäker hanterad kod eller när verifierbar hanterad kod interagerar med ohanterad kod:
- En åtkomstöverträdelse som inträffar i osäker hanterad kod kan uttryckas som antingen ett NullReferenceException undantag eller ett AccessViolationException undantag, beroende på plattformen.
- En åtkomstöverträdelse i ohanterad kod som bubblar upp till hanterad kod omsluts alltid i ett AccessViolationException undantag.
I båda fallen kan du identifiera och korrigera orsaken till AccessViolationException undantaget på följande sätt:
Kontrollera att det minne som du försöker komma åt har allokerats. Ett AccessViolationException undantag utlöses alltid av ett försök att få åtkomst till skyddat minne, dvs. för att komma åt minne som inte allokeras eller som inte ägs av en process.
Automatisk minneshantering är en av de tjänster som .NET-körningen tillhandahåller. Om hanterad kod har samma funktioner som din ohanterade kod kan du överväga att flytta till hanterad kod för att dra nytta av den här funktionen. Mer information finns i Automatisk minneshantering.
Kontrollera att det minne som du försöker komma åt inte har skadats. Om flera läs- eller skrivåtgärder har inträffat via felaktiga pekare kan minnet vara skadat. Detta inträffar vanligtvis när du läser eller skriver till adresser utanför en fördefinierad buffert.
AccessViolationException och try/catch-blockar
AccessViolationException undantag som genereras av .NET-körningen hanteras inte av -instruktionen catch i en strukturerad undantagshanterare om undantaget inträffar utanför det minne som reserverats av körningen.
Caution
Attributet HandleProcessCorruptedStateExceptions är föråldrat i aktuella .NET-versioner. Återställning från skadat processtillstånd – undantag stöds inte och attributet ignoreras om det finns.
Konstruktorer
| Name | Description |
|---|---|
| AccessViolationException() |
Initierar en ny instans av AccessViolationException klassen med ett systemmeddelande som beskriver felet. |
| AccessViolationException(SerializationInfo, StreamingContext) |
Föråldrad.
Initierar en ny instans av AccessViolationException klassen med serialiserade data. |
| AccessViolationException(String, Exception) |
Initierar en ny instans av AccessViolationException klassen med ett angivet felmeddelande och en referens till det inre undantaget som är orsaken till det här undantaget. |
| AccessViolationException(String) |
Initierar en ny instans av AccessViolationException klassen med ett angivet meddelande som beskriver felet. |
Egenskaper
| Name | Description |
|---|---|
| Data |
Hämtar en samling nyckel/värde-par som ger ytterligare användardefinierad information om undantaget. (Ärvd från Exception) |
| HelpLink |
Hämtar eller anger en länk till hjälpfilen som är associerad med det här undantaget. (Ärvd från Exception) |
| HResult |
Hämtar eller anger HRESULT, ett kodat numeriskt värde som har tilldelats ett specifikt undantag. (Ärvd från Exception) |
| InnerException |
Hämtar den Exception instans som orsakade det aktuella undantaget. (Ärvd från Exception) |
| Message |
Hämtar ett meddelande som beskriver det aktuella undantaget. (Ärvd från Exception) |
| Source |
Hämtar eller anger namnet på programmet eller objektet som orsakar felet. (Ärvd från Exception) |
| StackTrace |
Hämtar en strängrepresentation av de omedelbara ramarna i anropsstacken. (Ärvd från Exception) |
| TargetSite |
Hämtar den metod som utlöser det aktuella undantaget. (Ärvd från Exception) |
Metoder
| Name | Description |
|---|---|
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetBaseException() |
När den åsidosätts i en härledd klass returnerar den Exception som är rotorsaken till ett eller flera efterföljande undantag. (Ärvd från Exception) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetObjectData(SerializationInfo, StreamingContext) |
Föråldrad.
När åsidosättas i en härledd klass anger du SerializationInfo med information om undantaget. (Ärvd från Exception) |
| GetType() |
Hämtar körningstypen för den aktuella instansen. (Ärvd från Exception) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| ToString() |
Skapar och returnerar en strängrepresentation av det aktuella undantaget. (Ärvd från Exception) |
Händelser
| Name | Description |
|---|---|
| SerializeObjectState |
Föråldrad.
Inträffar när ett undantag serialiseras för att skapa ett undantagstillståndsobjekt som innehåller serialiserade data om undantaget. (Ärvd från Exception) |