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 a qual 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 inadequado.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, as 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 consistem inteiramente em código gerenciado verificável, 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 NullReferenceException uma 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 com 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 do AccessViolationExceptionTroubleshooting AccessViolationException exceptions

Uma AccessViolationException exceção pode ocorrer somente em código gerenciado sem segurança ou quando o código gerenciado verificável 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 da 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.
Uma 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 fornecer a mesma funcionalidade que o código não gerenciado, talvez você queira migrar para o código gerenciado para aproveitar essa 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 normalmente ocorre durante a leitura ou gravação de endereços fora de um buffer predefinido.This typically occurs when reading or writing to addresses outside of a predefined buffer.

Blocos AccessViolationException e try/catchAccessViolationException and try/catch blocks

A partir do .NET Framework 4.NET Framework 4, AccessViolationException as exceções geradas pelo Common Language Runtime não catch são manipuladas pela instrução em um manipulador de exceção estruturado se a exceção ocorrer fora da memória reservada pela linguagem comum appmodel.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 lidar com essa AccessViolationException exceção, você deve aplicar o HandleProcessCorruptedStateExceptionsAttribute atributo ao 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, o que pode continuar a ser detectado por uma 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 o código escrito para versões anteriores do .NET Framework que você deseja recompilar e executar sem modificação no .NET Framework 4.NET Framework 4, você pode adicionar o <elemento legacyCorruptedStateExceptionsPolicy > à configuração do aplicativo Grupo.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 tiver definido um manipulador para o AppDomain.FirstChanceException evento ou. AppDomain.UnhandledExceptionNote 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 é lançada no .NET Framework 2,0 e em 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 é gerado quando uma referência nula é desreferenciada no código gerenciado verificável, uma ocorrência que não envolve dados corrompidos, e não há como 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 os aplicativos selecionados revertam 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 linha a seguir na <seção> do elemento Runtime do arquivo de configuração do 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