AccessViolationException Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
De uitzondering die wordt gegenereerd wanneer er een poging is om beveiligd geheugen te lezen of schrijven.
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
- Overname
- Kenmerken
Opmerkingen
Een toegangsfout treedt op in onbeheerde of onveilige code wanneer de code probeert te lezen of te schrijven naar het geheugen dat niet is toegewezen of waartoe deze geen toegang heeft. Dit treedt meestal op omdat een aanwijzer een ongeldige waarde heeft. Niet alle lees- of schrijfbewerkingen via slechte aanwijzers leiden tot toegangsschendingen, dus een toegangsfout geeft meestal aan dat er verschillende lees- of schrijfbewerkingen zijn opgetreden via onjuiste aanwijzers en dat geheugen mogelijk beschadigd is. Toegangsschendingen duiden dus bijna altijd op ernstige programmeerfouten. AccessViolationException identificeert duidelijk deze ernstige fouten.
In programma's die volledig bestaan uit verifieerbare beheerde code, zijn alle verwijzingen geldig of null en zijn toegangsschendingen onmogelijk. Elke bewerking die naar een null-verwijzing in verifieerbare code verwijst, genereert een NullReferenceException uitzondering. Een AccessViolationException treedt alleen op wanneer verifieerbare beheerde code communiceert met onbeheerde code of met onveilige beheerde code.
Problemen met AccessViolationException-uitzonderingen oplossen
Een AccessViolationException uitzondering kan alleen optreden in onveilige beheerde code of wanneer verifieerbare beheerde code communiceert met onbeheerde code:
- Een toegangsschending die optreedt in onveilige beheerde code, kan worden uitgedrukt als een NullReferenceException uitzondering of een AccessViolationException uitzondering, afhankelijk van het platform.
- Een toegangsschending in onbeheerste code die naar beheerde code overgaat, wordt altijd verpakt in een AccessViolationException exception.
In beide gevallen kunt u de oorzaak van de AccessViolationException uitzondering als volgt identificeren en corrigeren:
Zorg ervoor dat het geheugen dat u probeert te openen, is toegewezen. Een AccessViolationException uitzondering wordt altijd gegenereerd door een poging om toegang te krijgen tot beveiligd geheugen, dat wil gezegd, om toegang te krijgen tot geheugen dat niet is toegewezen of dat niet eigendom is van een proces.
Automatisch geheugenbeheer is een van de services die de .NET-runtime biedt. Als beheerde code dezelfde functionaliteit biedt als uw onbeheerde code, kunt u overwegen om over te stappen op beheerde code om te profiteren van deze functionaliteit. Zie Automatisch geheugenbeheer voor meer informatie.
Zorg ervoor dat het geheugen dat u probeert te openen, niet is beschadigd. Als er verschillende lees- of schrijfbewerkingen zijn opgetreden via onjuiste aanwijzers, is het geheugen mogelijk beschadigd. Dit gebeurt meestal bij het lezen of schrijven naar adressen buiten een vooraf gedefinieerde buffer.
AccessViolationException en try/catch-blokken
AccessViolationException uitzonderingen die worden gegenereerd door de .NET-runtime, worden niet verwerkt door de catch instructie in een gestructureerde uitzonderingshandler als de uitzondering buiten het geheugen valt dat door de runtime is gereserveerd.
Caution
Het kenmerk HandleProcessCorruptedStateExceptions is verouderd in de huidige .NET-versies. Herstel van beschadigde processtatus-uitzonderingen wordt niet ondersteund en het kenmerk, indien aanwezig, wordt genegeerd.
Constructors
| Name | Description |
|---|---|
| AccessViolationException() |
Initialiseert een nieuw exemplaar van de klasse met een door het AccessViolationException systeem opgegeven bericht waarin de fout wordt beschreven. |
| AccessViolationException(SerializationInfo, StreamingContext) |
Verouderd.
Initialiseert een nieuw exemplaar van de AccessViolationException klasse met geserialiseerde gegevens. |
| AccessViolationException(String, Exception) |
Initialiseert een nieuw exemplaar van de AccessViolationException klasse met een opgegeven foutbericht en een verwijzing naar de binnenste uitzondering die de oorzaak van deze uitzondering is. |
| AccessViolationException(String) |
Initialiseert een nieuw exemplaar van de AccessViolationException klasse met een opgegeven bericht waarin de fout wordt beschreven. |
Eigenschappen
| Name | Description |
|---|---|
| Data |
Hiermee haalt u een verzameling sleutel-waardeparen op die aanvullende door de gebruiker gedefinieerde informatie over de uitzondering bieden. (Overgenomen van Exception) |
| HelpLink |
Hiermee haalt u een koppeling op naar het Help-bestand dat aan deze uitzondering is gekoppeld. (Overgenomen van Exception) |
| HResult |
Hiermee wordt HRESULT opgehaald of ingesteld, een gecodeerde numerieke waarde die is toegewezen aan een specifieke uitzondering. (Overgenomen van Exception) |
| InnerException |
Hiermee haalt u het Exception exemplaar op dat de huidige uitzondering heeft veroorzaakt. (Overgenomen van Exception) |
| Message |
Hiermee wordt een bericht weergegeven waarin de huidige uitzondering wordt beschreven. (Overgenomen van Exception) |
| Source |
Hiermee wordt de naam van de toepassing of het object dat de fout veroorzaakt, opgehaald of ingesteld. (Overgenomen van Exception) |
| StackTrace |
Hiermee haalt u een tekenreeksweergave van de directe frames op de aanroepstack op. (Overgenomen van Exception) |
| TargetSite |
Hiermee haalt u de methode op waarmee de huidige uitzondering wordt gegenereerd. (Overgenomen van Exception) |
Methoden
| Name | Description |
|---|---|
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GetBaseException() |
Wanneer deze wordt overschreven in een afgeleide klasse, retourneert u de Exception hoofdoorzaak van een of meer volgende uitzonderingen. (Overgenomen van Exception) |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetObjectData(SerializationInfo, StreamingContext) |
Verouderd.
Wanneer deze wordt overschreven in een afgeleide klasse, stelt u de SerializationInfo met informatie over de uitzondering in. (Overgenomen van Exception) |
| GetType() |
Hiermee haalt u het runtimetype van het huidige exemplaar op. (Overgenomen van Exception) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| ToString() |
Hiermee maakt en retourneert u een tekenreeksweergave van de huidige uitzondering. (Overgenomen van Exception) |
gebeurtenis
| Name | Description |
|---|---|
| SerializeObjectState |
Verouderd.
Treedt op wanneer een uitzondering wordt geserialiseerd om een uitzonderingsstatusobject te maken dat geserialiseerde gegevens over de uitzondering bevat. (Overgenomen van Exception) |