AccessViolationException AccessViolationException AccessViolationException AccessViolationException Class

Definição

A exceção gerada quando há uma tentativa de ler ou gravar a memória protegida.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
Herança
AccessViolationExceptionAccessViolationExceptionAccessViolationExceptionAccessViolationException
Atributos

Comentários

Uma violação de acesso ocorre em código não gerenciado ou não seguro quando o código tenta ler ou gravar na memória que não foi alocada, ou para o qual ele não tem acesso.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. Isso geralmente ocorre porque um ponteiro tem um valor inválido.This usually occurs because a pointer has a bad value. Nem todas as leituras ou gravações por ponteiros incorretos resultam em violações de acesso, de modo que uma violação de acesso geralmente indica que várias leituras ou gravações ocorreram por ponteiros incorretos, e que a memória pode estar corrompida.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. Assim, violações de acesso quase sempre indicam erros graves de programação.Thus, access violations almost always indicate serious programming errors. Um AccessViolationException claramente identifica esses erros graves.An AccessViolationException clearly identifies these serious errors.

Em programas que consistam inteiramente de código gerenciado pode ser verificado, todas as referências são válidas ou nulas e violações de acesso são impossíveis.In programs consisting entirely of verifiable managed code, all references are either valid or null, and access violations are impossible. Qualquer operação que tenta fazer referência a uma referência nula no código verificável gera um NullReferenceException exceção.Any operation that attempts to reference a null reference in verifiable code throws a NullReferenceException exception. Um AccessViolationException ocorre somente quando o código gerenciado verificável interage com código não gerenciado ou código gerenciado não seguro.An AccessViolationException occurs only when verifiable managed code interacts with unmanaged code or with unsafe managed code.

Solucionando problemas de exceções AccessViolationExceptionTroubleshooting AccessViolationException exceptions

Um AccessViolationException exceção pode ocorrer apenas em código gerenciado não seguro ou quando gerenciado verificável código interage com código não gerenciado:An AccessViolationException exception can occur only in unsafe managed code or when verifiable managed code interacts with unmanaged code:

Em ambos os casos, você pode identificar e corrigir a causa do AccessViolationException exceção da seguinte maneira:In either case, you can identify and correct the cause of the AccessViolationException exception as follows:

Verifique se a memória que você está tentando acessar foi alocada.Make sure that the memory that you are attempting to access has been allocated.
Um AccessViolationException exceção sempre é gerada por uma tentativa de acessar a memória protegida – ou seja, para acessar a memória que não está alocada ou que não pertence a um 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.

O gerenciamento automático de memória é um dos serviços que o Common Language Runtime fornece.Automatic memory management is one of the services that the common language runtime provides. Se o código gerenciado fornece a mesma funcionalidade que seu código não gerenciado, você poderá ir para código gerenciado para tirar proveito dessa funcionalidade.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. Para obter mais informações, consulte Automatic Memory Management.For more information, see Automatic Memory Management.

Verifique se a memória que você está tentando acessar não foi corrompida.Make sure that the memory that you are attempting to access has not been corrupted.
Se várias operações de leitura ou gravação ocorreram por ponteiros incorretos, a memória pode estar corrompida.If several read or write operations have occurred through bad pointers, memory may be corrupted. Isso geralmente ocorre ao ler ou gravar para endereços fora de um buffer predefinido.This typically occurs when reading or writing to addresses outside of a predefined buffer.

Blocos try/catch e de AccessViolationExceptionAccessViolationException and try/catch blocks

Começando com o .NET Framework 4.NET Framework 4, AccessViolationException exceções geradas pelo common language runtime não são manipuladas pelo catch instrução em um manipulador de exceção estruturada se a exceção ocorrer fora a memória reservada pelo common language tempo de execução.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. Para tratar de uma AccessViolationException exceção, você deve aplicar o HandleProcessCorruptedStateExceptionsAttribute de atributo para o método no qual a exceção é lançada.To handle such an AccessViolationException exception, you should apply the HandleProcessCorruptedStateExceptionsAttribute attribute to the method in which the exception is thrown. Essa alteração não afeta AccessViolationException as exceções geradas pelo código do usuário, que pode continuar a ser capturada por um catch instrução.This change does not affect AccessViolationException exceptions thrown by user code, which can continue to be caught by a catch statement. Para código escrito para versões anteriores do .NET Framework que você deseja recompilar e executados sem modificação na .NET Framework 4.NET Framework 4, você pode adicionar a <legacyCorruptedStateExceptionsPolicy > elemento para seu arquivo de configuração do aplicativo.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. Observe que você também pode receber a notificação das exceções se você tiver definido um manipulador para o AppDomain.FirstChanceException ou AppDomain.UnhandledException eventos.Note that you can also receive notification of the exceptions if you have defined a handler for the AppDomain.FirstChanceException or AppDomain.UnhandledException event.

Informações de versãoVersion Information

Essa exceção é gerada no .NET Framework 2.0 e versões posteriores.This exception is thrown in the .NET Framework 2.0 and later versions. Em versões anteriores do .NET Framework, uma violação de acesso em código não gerenciado ou código gerenciado não seguro é representada por um NullReferenceException em código gerenciado.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. Um NullReferenceException também é lançada quando uma referência nula é desreferenciada em código gerenciado pode ser verificado, uma ocorrência que envolvem dados corrompidos, e não há nenhuma maneira de distinguir entre as duas situações nas versões 1.0 ou 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.

Os administradores podem permitir que aplicativos selecionados para reverter para o comportamento do .NET Framework versão 1.1.Administrators can allow selected applications to revert to the behavior of the .NET Framework version 1.1. Coloque a seguinte linha na <tempo de execução> elemento seção do arquivo de configuração para o aplicativo:Place the following line in the <runtime> Element section of the configuration file for the application:

<legacyNullReferenceExceptionPolicy enabled = "1"/>  

Construtores

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

Inicializa uma nova instância da classe AccessViolationException com uma mensagem fornecida pelo sistema que descreve o erro.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)

Inicializa uma nova instância da classe AccessViolationException com dados serializados.Initializes a new instance of the AccessViolationException class with serialized data.

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

Inicializa uma nova instância da classe AccessViolationException com uma mensagem especificada que descreve o erro.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)

Inicializa uma nova instância da classe AccessViolationException com uma mensagem de erro especificada e uma referência à exceção interna que é a causa da exceção.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.

Propriedades

Data Data Data Data

Obtém uma coleção de pares de chave/valor que fornecem informações adicionais definidas pelo usuário sobre a exceção.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Inherited from Exception)
HelpLink HelpLink HelpLink HelpLink

Obtém ou define um link para o arquivo de ajuda associado a essa exceção.Gets or sets a link to the help file associated with this exception.

(Inherited from Exception)
HResult HResult HResult HResult

Obtém ou define HRESULT, um valor numérico codificado que é atribuído a uma exceção específica.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Inherited from Exception)
InnerException InnerException InnerException InnerException

Obtém a instância Exception que causou a exceção atual.Gets the Exception instance that caused the current exception.

(Inherited from Exception)
Message Message Message Message

Obtém uma mensagem que descreve a exceção atual.Gets a message that describes the current exception.

(Inherited from Exception)
Source Source Source Source

Obtém ou define o nome do aplicativo ou objeto que causa o erro.Gets or sets the name of the application or the object that causes the error.

(Inherited from Exception)
StackTrace StackTrace StackTrace StackTrace

Obtém uma representação de cadeia de caracteres de quadros imediatos na pilha de chamadas.Gets a string representation of the immediate frames on the call stack.

(Inherited from Exception)
TargetSite TargetSite TargetSite TargetSite

Obtém o método que gerou a exceção atual.Gets the method that throws the current exception.

(Inherited from Exception)

Métodos

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

Determina se o objeto especificado é igual ao objeto atual.Determines whether the specified object is equal to the current object.

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

Quando substituído em uma classe derivada, retorna a Exception que é a causa raiz de uma ou mais exceções subsequentes.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()

Serve como a função de hash padrão.Serves as the default hash function.

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

Quando substituído em uma classe derivada, define o SerializationInfo com informações sobre a exceção.When overridden in a derived class, sets the SerializationInfo with information about the exception.

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

Obtém o tipo de tempo de execução da instância atual.Gets the runtime type of the current instance.

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

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

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

Cria e retorna uma representação de cadeia de caracteres da exceção atual.Creates and returns a string representation of the current exception.

(Inherited from Exception)

Eventos

SerializeObjectState SerializeObjectState SerializeObjectState SerializeObjectState

Ocorre quando uma exceção é serializada para criar um objeto de estado de exceção que contém dados serializados sobre a exceção.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Inherited from Exception)

Aplica-se a

Veja também