AccessViolationException Classe
TOC
Comprimi il sommario
Espandi il sommario
Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Classe AccessViolationException

 

Eccezione generata quando viene effettuato un tentativo di leggere o scrivere in un'area di memoria protetta.

Spazio dei nomi:   System
Assembly:  mscorlib (in mscorlib.dll)

System.Object
  System.Exception
    System.SystemException
      System.AccessViolationException

[SerializableAttribute]
[ComVisibleAttribute(true)]
public class AccessViolationException : SystemException

NomeDescrizione
System_CAPS_pubmethodAccessViolationException()

Inizializza una nuova istanza della classe AccessViolationException con un messaggio fornito dal sistema in cui viene descritto l'errore.

System_CAPS_protmethodAccessViolationException(SerializationInfo, StreamingContext)

Inizializza una nuova istanza della classe AccessViolationException con dati serializzati.

System_CAPS_pubmethodAccessViolationException(String)

Inizializza una nuova istanza della classe AccessViolationException con un messaggio specificato in cui viene descritto l'errore.

System_CAPS_pubmethodAccessViolationException(String, Exception)

Inizializza una nuova istanza della classe AccessViolationException con un messaggio di errore specificato e un riferimento all'eccezione interna che è la causa dell'eccezione corrente.

NomeDescrizione
System_CAPS_pubpropertyData

Ottiene una collezione di coppie chiave/valore che forniscono ulteriori informazioni definite dall'utente sull'eccezione. (Ereditato da Exception.)

System_CAPS_pubpropertyHelpLink

Ottiene o imposta un collegamento al file della Guida associato all'eccezione.(Ereditato da Exception.)

System_CAPS_pubpropertyHResult

Ottiene o imposta HRESULT, un valore numerico codificato che viene assegnato ad una specifica eccezione. (Ereditato da Exception.)

System_CAPS_pubpropertyInnerException

Ottiene l'istanza di Exception che ha causato l'eccezione corrente.(Ereditato da Exception.)

System_CAPS_pubpropertyMessage

Ottiene un messaggio che descrive l'eccezione corrente.(Ereditato da Exception.)

System_CAPS_pubpropertySource

Ottiene o imposta il nome dell'oggetto o dell'applicazione che ha generato l'errore.(Ereditato da Exception.)

System_CAPS_pubpropertyStackTrace

Ottiene una rappresentazione in forma di stringa dei frame nello stack di chiamate. (Ereditato da Exception.)

System_CAPS_pubpropertyTargetSite

Ottiene il metodo che ha generato l'eccezione corrente. (Ereditato da Exception.)

NomeDescrizione
System_CAPS_pubmethodEquals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object.)

System_CAPS_protmethodFinalize()

Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulizia prima che l'oggetto stesso venga reclamato dalla procedura di Garbage Collection. (Ereditato da Object.)

System_CAPS_pubmethodGetBaseException()

Quando ne viene eseguito l'override in una classe derivata, restituisce l'Exception che è la causa radice di una o più eccezioni successive.(Ereditato da Exception.)

System_CAPS_pubmethodGetHashCode()

Funge da funzione hash predefinita.(Ereditato da Object.)

System_CAPS_pubmethodGetObjectData(SerializationInfo, StreamingContext)

Quando ne viene eseguito l'override in una classe derivata, imposta il controllo SerializationInfo con le informazioni sull'eccezione.(Ereditato da Exception.)

System_CAPS_pubmethodGetType()

Ottiene il tipo di runtime dell'istanza corrente.(Ereditato da Exception.)

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.(Ereditato da Object.)

System_CAPS_pubmethodToString()

Crea e restituisce una rappresentazione di stringa dell'eccezione corrente.(Ereditato da Exception.)

NomeDescrizione
System_CAPS_proteventSerializeObjectState

Si verifica quando un'eccezione viene serializzata per creare un oggetto di stato eccezione contenente i dati serializzati relativi all'eccezione.(Ereditato da Exception.)

Quando il codice tenta di leggere o scrivere in memoria che non è stata allocata o alle quali il codice non dispone dell'accesso, si verifica una violazione di accesso nel codice non gestito o unsafe. Ciò accade solitamente perché un puntatore con un valore non valido. Poiché non tutte le operazioni di lettura o scrittura tramite puntatori non validi generano violazioni di accesso, quando si verifica una violazione di accesso in genere significa che sono state eseguite numerose operazioni di lettura o scrittura tramite puntatori non validi e che la memoria potrebbe essere danneggiata. Di conseguenza, le violazioni di accesso quasi sempre indicano errori gravi di programmazione. Un AccessViolationException identifica chiaramente tali errori gravi.

Nei programmi costituite interamente da codice gestito verificabile, tutti i riferimenti sono validi o null e violazioni di accesso sono impossibili. Qualsiasi operazione che tenta di utilizzare un riferimento null in codice verificabile genera un'eccezione un NullReferenceException (eccezione). Un AccessViolationException si verifica solo quando il codice gestito verificabile interagisce con codice non gestito o codice gestito unsafe.

Un AccessViolationException eccezione può verificarsi solo in codice gestito unsafe o gestito verificabile codice interagisce con codice non gestito:

  • Una violazione di accesso che si verifica in codice gestito unsafe può essere espresso come un NullReferenceException eccezione o un AccessViolationException eccezione, a seconda della piattaforma.

  • Una violazione di accesso nel codice non gestito che viene propagato fino a codice gestito viene sempre eseguito il wrapping un AccessViolationException (eccezione).

In entrambi i casi, è possibile identificare e correggere la causa del AccessViolationException eccezione come indicato di seguito:

Assicurarsi che la memoria a cui si sta tentando di accedere sia stata allocata.

Un AccessViolationException viene sempre generata dal tentativo di accedere memoria protetta, vale a dire, per accedere alla memoria non allocata o che non appartiene a un processo.

La gestione automatica della memoria è uno dei servizi forniti da Common Language Runtime. Se il codice gestito fornisce la stessa funzionalità del codice unmanagede, si consiglia di spostare il codice gestito per sfruttare i vantaggi di questa funzionalità. Per altre informazioni, vedere Gestione automatica della memoria.

Assicurarsi che la memoria a cui si sta tentando di accedere non sia danneggiata.

Se sono state eseguite numerose operazioni di lettura o scrittura tramite puntatori non validi, è possibile che la memoria sia danneggiata. Ciò si verifica in genere durante la lettura o scrittura per gli indirizzi di fuori di un buffer predefinito.

A partire da .NET Framework 4, le eccezioni AccessViolationException generate da Common Language Runtime non vengono gestite dall'istruzione catch in un gestore di eccezioni strutturato se l'eccezione si verifica all'esterno della memoria riservata da Common Language Runtime. Per gestire tale eccezione AccessViolationException, è necessario applicare l'attributo HandleProcessCorruptedStateExceptionsAttribute al metodo in cui viene generata l'eccezione. Questa modifica non influisce sulle eccezioni AccessViolationException generate dal codice utente, che possono continuare a essere rilevate da un'istruzione catch. Per il codice scritto per le versioni precedenti di .NET Framework che si desidera ricompilare ed eseguite senza modifica sul .NET Framework 4, è possibile aggiungere il < legacyCorruptedStateExceptionsPolicy > elemento al file di configurazione dell'applicazione. Si noti che è possibile ricevere la notifica delle eccezioni se è stato definito un gestore per l'evento AppDomain.FirstChanceException o AppDomain.UnhandledException.

Questa eccezione viene generata in .NET Framework 2.0 e nelle versioni successive. Nelle versioni precedenti di .NET Framework, una violazione di accesso nel codice non gestito o codice gestito unsafe è rappresentata da un NullReferenceException nel codice gestito. Oggetto NullReferenceException viene generata anche quando un riferimento null viene dereferenziato in codice gestito verificabile, un'occorrenza che non comporta il danneggiamento dei dati, e non è possibile distinguere tra le due situazioni nelle versioni 1.0 o 1.1.

Gli amministratori possono consentire alle applicazioni selezionate ripristinare il comportamento di .NET Framework versione 1.1. Inserire la riga seguente nel Elemento <runtime> sezione del file di configurazione per l'applicazione:

<legacyNullReferenceExceptionPolicy enabled = "1"/>

.NET Framework
Disponibile da 2.0
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0

Eventuali membri pubblici statici (Shared in Visual Basic) di questo tipo sono thread-safe. I membri di istanza non sono garantiti come thread-safe.

Torna all'inizio
Mostra:
© 2016 Microsoft