AccessViolationException Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Eccezione generata quando si tenta di leggere o scrivere memoria protetta.
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
- Ereditarietà
- Attributi
Commenti
Una violazione di accesso si verifica in codice non gestito o non sicuro quando il codice tenta di leggere o scrivere in memoria che non è stato allocato o a cui non ha accesso. Ciò si verifica in genere perché un puntatore ha un valore non valido. Non tutte le letture o le scritture tramite puntatori non valido causano violazioni di accesso, pertanto una violazione di accesso indica in genere che diverse letture o scritture si sono verificate tramite puntatori non valido e che la memoria potrebbe essere danneggiata. Pertanto, le violazioni di accesso quasi sempre indicano gravi errori di programmazione. Un AccessViolationException elemento identifica chiaramente questi gravi errori.
Nei programmi costituiti interamente da codice gestito verificabile, tutti i riferimenti sono validi o null e le violazioni di accesso sono impossibili. Qualsiasi operazione che tenta di fare riferimento a un riferimento Null nel codice verificabile genera un'eccezione NullReferenceException . AccessViolationException si verifica solo quando del codice gestito, che può essere verificato, interagisce con codice non gestito o con codice gestito non sicuro.
Risolvere i problemi relativi alle eccezioni AccessViolationException
Un'eccezione AccessViolationException può verificarsi solo in codice gestito non sicuro o quando il codice gestito verificabile interagisce con codice non gestito:
- Una violazione di accesso che si verifica nel codice gestito non sicuro può essere espressa come NullReferenceException eccezione o AccessViolationException eccezione, a seconda della piattaforma.
- Una violazione di accesso nel codice non gestito che si sposta fino al codice gestito viene sempre racchiusa in un'eccezione AccessViolationException .
In entrambi i casi, è possibile identificare e correggere la causa dell'eccezione AccessViolationException come indicato di seguito:
Assicurarsi che la memoria a cui si sta tentando di accedere sia stata allocata. Un'eccezione AccessViolationException viene sempre generata da un tentativo di accedere alla memoria protetta, ovvero per accedere alla memoria non allocata o che non è di proprietà di un processo.
La gestione automatica della memoria è uno dei servizi offerti dal runtime .NET. Se il codice gestito fornisce la stessa funzionalità del codice non gestito, è consigliabile passare al codice gestito per sfruttare questa funzionalità. Per altre informazioni, vedere Gestione automatica della memoria.
Assicurarsi che la memoria che si sta tentando di accedere non sia danneggiata. Se sono state eseguite diverse operazioni di lettura o scrittura tramite puntatori non valido, la memoria potrebbe essere danneggiata. Ciò si verifica in genere durante la lettura o la scrittura in indirizzi esterni a un buffer predefinito.
AccessViolationException e blocchi try/catch
AccessViolationException Le eccezioni generate dal runtime .NET non vengono gestite dall'istruzione catch in un gestore di eccezioni strutturate se l'eccezione si verifica all'esterno della memoria riservata dal runtime.
Caution
L'attributo HandleProcessCorruptedStateExceptions è obsoleto nelle versioni correnti di .NET. Il ripristino da eccezioni di stato del processo danneggiato non è supportato e l'attributo, se presente, viene ignorato.
Costruttori
| Nome | Descrizione |
|---|---|
| AccessViolationException() |
Inizializza una nuova istanza della classe AccessViolationException con un messaggio fornito dal sistema che descrive l'errore. |
| AccessViolationException(SerializationInfo, StreamingContext) |
Obsoleti.
Inizializza una nuova istanza della AccessViolationException classe con dati serializzati. |
| AccessViolationException(String, Exception) |
Inizializza una nuova istanza della AccessViolationException classe con un messaggio di errore specificato e un riferimento all'eccezione interna che è la causa di questa eccezione. |
| AccessViolationException(String) |
Inizializza una nuova istanza della classe AccessViolationException con un messaggio specificato che descrive l'errore. |
Proprietà
| Nome | Descrizione |
|---|---|
| Data |
Ottiene una raccolta di coppie chiave/valore che forniscono informazioni aggiuntive definite dall'utente sull'eccezione. (Ereditato da Exception) |
| HelpLink |
Ottiene o imposta un collegamento al file della Guida associato a questa eccezione. (Ereditato da Exception) |
| HResult |
Ottiene o imposta HRESULT, valore numerico codificato assegnato a un'eccezione specifica. (Ereditato da Exception) |
| InnerException |
Ottiene l'istanza Exception che ha causato l'eccezione corrente. (Ereditato da Exception) |
| Message |
Ottiene un messaggio che descrive l'eccezione corrente. (Ereditato da Exception) |
| Source |
Ottiene o imposta il nome dell'applicazione o dell'oggetto che causa l'errore. (Ereditato da Exception) |
| StackTrace |
Ottiene una rappresentazione di stringa dei fotogrammi immediati nello stack di chiamate. (Ereditato da Exception) |
| TargetSite |
Ottiene il metodo che genera l'eccezione corrente. (Ereditato da Exception) |
Metodi
| Nome | Descrizione |
|---|---|
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| GetBaseException() |
Quando sottoposto a override in una classe derivata, restituisce l'oggetto Exception che rappresenta la causa radice di una o più eccezioni successive. (Ereditato da Exception) |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetObjectData(SerializationInfo, StreamingContext) |
Obsoleti.
In caso di override in una classe derivata, imposta con le SerializationInfo informazioni sull'eccezione. (Ereditato da Exception) |
| GetType() |
Ottiene il tipo di runtime dell'istanza corrente. (Ereditato da Exception) |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| ToString() |
Crea e restituisce una rappresentazione di stringa dell'eccezione corrente. (Ereditato da Exception) |
Eventi
| Nome | Descrizione |
|---|---|
| SerializeObjectState |
Obsoleti.
Si verifica quando viene serializzata un'eccezione per creare un oggetto stato dell'eccezione contenente dati serializzati sull'eccezione. (Ereditato da Exception) |