AccessViolationException AccessViolationException AccessViolationException AccessViolationException Class

Definizione

Eccezione generata quando viene eseguito un tentativo di leggere o scrivere nella memoria protetta.The exception that is thrown when there is an attempt to read or write protected memory.

public ref class AccessViolationException : SystemException
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class AccessViolationException : SystemException
type AccessViolationException = class
    inherit SystemException
Public Class AccessViolationException
Inherits SystemException
Ereditarietà
AccessViolationExceptionAccessViolationExceptionAccessViolationExceptionAccessViolationException
Attributi

Commenti

Quando il codice tenta di leggere o scrivere in memoria che non è stata allocata, a cui si dispone o meno l'accesso, si verifica una violazione di accesso nel codice non gestito o unsafe.An access violation occurs in unmanaged or unsafe code when the code attempts to read or write to memory that has not been allocated, or to which it does not have access. Ciò accade solitamente perché un puntatore con un valore non valido.This usually occurs because a pointer has a bad value. 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.Not all reads or writes through bad pointers lead to access violations, so an access violation usually indicates that several reads or writes have occurred through bad pointers, and that memory might be corrupted. Di conseguenza, le violazioni di accesso quasi sempre indicano errori gravi di programmazione.Thus, access violations almost always indicate serious programming errors. Un AccessViolationException identifica chiaramente tali errori gravi.An AccessViolationException clearly identifies these serious errors.

In programmi costituite interamente da codice gestito verificabile, tutti i riferimenti sono validi o null e sono in grado di violazioni di accesso.In programs consisting entirely of verifiable managed code, all references are either valid or null, and access violations are impossible. Qualsiasi operazione che tenta di fare riferimento a un riferimento null in codice verificabile genera un NullReferenceException eccezione.Any operation that attempts to reference a null reference in verifiable code throws a NullReferenceException exception. Un AccessViolationException si verifica solo quando il codice gestito verificabile interagisce con codice non gestito o codice gestito non sicuro.An AccessViolationException occurs only when verifiable managed code interacts with unmanaged code or with unsafe managed code.

Risoluzione dei problemi relativi alle eccezioni AccessViolationExceptionTroubleshooting AccessViolationException exceptions

Un AccessViolationException eccezione può verificarsi solo nel codice gestito unsafe o quando è gestita verificabile codice interagisce con il codice non gestito:An AccessViolationException exception can occur only in unsafe managed code or when verifiable managed code interacts with unmanaged code:

In entrambi i casi, è possibile identificare e correggere la causa del AccessViolationException eccezione come indicato di seguito:In either case, you can identify and correct the cause of the AccessViolationException exception as follows:

Assicurarsi che la memoria a cui si sta tentando di accedere sia stata allocata.Make sure that the memory that you are attempting to access has been allocated.
Un AccessViolationException viene sempre generata dal tentativo di accedere alla memoria protetta, vale a dire, per accedere alla memoria non allocata oppure che non appartiene a un processo.An AccessViolationException exception is always thrown by an attempt to access protected memory -- that is, to access memory that is not allocated or that is not owned by a process.

La gestione automatica della memoria è uno dei servizi forniti da Common Language Runtime.Automatic memory management is one of the services that the common language runtime provides. Se il codice gestito fornisce la stessa funzionalità come il codice non gestito, è consigliabile passare al codice gestito per sfruttare i vantaggi di questa funzionalità.If managed code provides the same functionality as your unmanaged code, you may wish to move to managed code to take advantage of this functionality. Per altre informazioni, vedere Automatic Memory Management.For more information, see Automatic Memory Management.

Assicurarsi che la memoria a cui si sta tentando di accedere non sia danneggiata.Make sure that the memory that you are attempting to access has not been corrupted.
Se sono state eseguite numerose operazioni di lettura o scrittura tramite puntatori non validi, è possibile che la memoria sia danneggiata.If several read or write operations have occurred through bad pointers, memory may be corrupted. Ciò si verifica in genere durante la lettura o scrittura per gli indirizzi di fuori di un buffer predefinito.This typically occurs when reading or writing to addresses outside of a predefined buffer.

Blocchi try/catch e AccessViolationExceptionAccessViolationException and try/catch blocks

A partire da .NET Framework 4.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.Starting with the .NET Framework 4.NET Framework 4, AccessViolationException exceptions thrown by the common language runtime are not handled by the catch statement in a structured exception handler if the exception occurs outside of the memory reserved by the common language runtime. Per gestire tale eccezione AccessViolationException, è necessario applicare l'attributo HandleProcessCorruptedStateExceptionsAttribute al metodo in cui viene generata l'eccezione.To handle such an AccessViolationException exception, you should apply the HandleProcessCorruptedStateExceptionsAttribute attribute to the method in which the exception is thrown. Questa modifica non influisce sulle eccezioni AccessViolationException generate dal codice utente, che possono continuare a essere rilevate da un'istruzione catch.This change does not affect AccessViolationException exceptions thrown by user code, which can continue to be caught by a catch statement. Per il codice scritto per le versioni precedenti di .NET Framework che si desidera ricompilare ed eseguire senza alcuna modifica nel .NET Framework 4.NET Framework 4, è possibile aggiungere i <legacyCorruptedStateExceptionsPolicy > elemento per il file di configurazione dell'app.For code written for previous versions of the .NET Framework that you want to recompile and run without modification on the .NET Framework 4.NET Framework 4, you can add the <legacyCorruptedStateExceptionsPolicy> element to your app's configuration file. Si noti che è possibile ricevere la notifica delle eccezioni se è stato definito un gestore per l'evento AppDomain.FirstChanceException o AppDomain.UnhandledException.Note that you can also receive notification of the exceptions if you have defined a handler for the AppDomain.FirstChanceException or AppDomain.UnhandledException event.

Informazioni sulla versioneVersion Information

Questa eccezione viene generata in .NET Framework 2.0 e nelle versioni successive.This exception is thrown in the .NET Framework 2.0 and later versions. 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.In earlier versions of the .NET Framework, an access violation in unmanaged code or unsafe managed code is represented by a NullReferenceException in managed code. Oggetto NullReferenceException viene inoltre generata quando un riferimento null è dereferenziato in codice gestito verificabile, un'occorrenza che non implica danneggiamento dei dati, e non vi è alcun modo per distinguere tra le due situazioni nelle versioni 1.0 o 1.1.A NullReferenceException is also thrown when a null reference is dereferenced in verifiable managed code, an occurrence that does not involve data corruption, and there is no way to distinguish between the two situations in versions 1.0 or 1.1.

Gli amministratori possono consentire alle applicazioni selezionate ripristinare il comportamento di .NET Framework versione 1.1.Administrators can allow selected applications to revert to the behavior of the .NET Framework version 1.1. Inserire la riga seguente nel <runtime> elemento sezione del file di configurazione per l'applicazione:Place the following line in the <runtime> Element section of the configuration file for the application:

<legacyNullReferenceExceptionPolicy enabled = "1"/>  

Costruttori

AccessViolationException() AccessViolationException() AccessViolationException() AccessViolationException()

Inizializza una nuova istanza della classe AccessViolationException con un messaggio fornito dal sistema in cui viene descritto l'errore.Initializes a new instance of the AccessViolationException class with a system-supplied message that describes the error.

AccessViolationException(SerializationInfo, StreamingContext) AccessViolationException(SerializationInfo, StreamingContext) AccessViolationException(SerializationInfo, StreamingContext) AccessViolationException(SerializationInfo, StreamingContext)

Inizializza una nuova istanza della classe AccessViolationException con dati serializzati.Initializes a new instance of the AccessViolationException class with serialized data.

AccessViolationException(String) AccessViolationException(String) AccessViolationException(String) AccessViolationException(String)

Inizializza una nuova istanza della classe AccessViolationException con un messaggio specificato in cui viene descritto l'errore.Initializes a new instance of the AccessViolationException class with a specified message that describes the error.

AccessViolationException(String, Exception) AccessViolationException(String, Exception) AccessViolationException(String, Exception) AccessViolationException(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.Initializes a new instance of the AccessViolationException class with a specified error message and a reference to the inner exception that is the cause of this exception.

Proprietà

Data Data Data Data

Ottiene una raccolta di coppie chiave-valore che fornisce informazioni aggiuntive definite dall'utente relative all'eccezione.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Inherited from Exception)
HelpLink HelpLink HelpLink HelpLink

Ottiene o imposta un collegamento al file della Guida associato all'eccezione.Gets or sets a link to the help file associated with this exception.

(Inherited from Exception)
HResult HResult HResult HResult

Ottiene o imposta HRESULT, un valore numerico codificato che viene assegnato a un'eccezione specifica.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Inherited from Exception)
InnerException InnerException InnerException InnerException

Ottiene l'istanza di Exception che ha causato l'eccezione corrente.Gets the Exception instance that caused the current exception.

(Inherited from Exception)
Message Message Message Message

Ottiene un messaggio che descrive l'eccezione corrente.Gets a message that describes the current exception.

(Inherited from Exception)
Source Source Source Source

Ottiene o imposta il nome dell'oggetto o dell'applicazione che ha generato l'errore.Gets or sets the name of the application or the object that causes the error.

(Inherited from Exception)
StackTrace StackTrace StackTrace StackTrace

Ottiene una rappresentazione di stringa dei frame immediati nello stack di chiamate.Gets a string representation of the immediate frames on the call stack.

(Inherited from Exception)
TargetSite TargetSite TargetSite TargetSite

Ottiene il metodo che genera l'eccezione corrente.Gets the method that throws the current exception.

(Inherited from Exception)

Metodi

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetBaseException() GetBaseException() GetBaseException() GetBaseException()

Se utilizzato come metodo di override in una classe derivata, restituisce l'Exception che è la causa radice di una o più eccezioni successive.When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.

(Inherited from Exception)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Inherited from Object)
GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext)

Quando l'override viene eseguito in una classe derivata, imposta il controllo SerializationInfo per la colonna.When overridden in a derived class, sets the SerializationInfo with information about the exception.

(Inherited from Exception)
GetType() GetType() GetType() GetType()

Ottiene il tipo di runtime dell'istanza corrente.Gets the runtime type of the current instance.

(Inherited from Exception)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Crea e restituisce una rappresentazione di stringa dell'eccezione corrente.Creates and returns a string representation of the current exception.

(Inherited from Exception)

Eventi

SerializeObjectState SerializeObjectState SerializeObjectState SerializeObjectState

Si verifica quando un'eccezione viene serializzata per creare un oggetto di stato eccezione contenente i dati serializzati relativi all'eccezione.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Inherited from Exception)

Si applica a

Vedi anche