AccessViolationException Sınıf

Tanım

Korunan belleği okuma veya yazma girişimi olduğunda oluşturulan özel durum.The exception that is thrown when there is an attempt to read or write protected memory.

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
Devralma
AccessViolationException
Öznitelikler

Açıklamalar

Kod ayrılmayan veya erişimi olmayan belleğe yazmaya çalıştığında, yönetilmeyen veya güvenli olmayan kodda erişim ihlali oluşur.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. Bu genellikle bir işaretçinin değeri hatalı olduğu için oluşur.This usually occurs because a pointer has a bad value. Kötü işaretçiler aracılığıyla tüm okuma veya yazma işlemleri, erişim ihlallerine yol açabilir. bu nedenle, erişim ihlali genellikle kötü işaretçiler aracılığıyla birkaç okuma veya yazma gerçekleştiğini ve belleğin bozuk olabileceğini gösterir.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. Bu nedenle, erişim ihlalleri neredeyse her zaman ciddi programlama hatalarını gösterir.Thus, access violations almost always indicate serious programming errors. AccessViolationExceptionBu ciddi hataları açık bir şekilde tanımlar.An AccessViolationException clearly identifies these serious errors.

Tamamen doğrulanabilir yönetilen koddan oluşan programlarda, tüm başvurular geçerli ya da null ve erişim ihlalleri olanaksızdır.In programs consisting entirely of verifiable managed code, all references are either valid or null, and access violations are impossible. Doğrulanabilir kodda null başvuruya başvuruda bulunan herhangi bir işlem NullReferenceException özel durum oluşturur.Any operation that attempts to reference a null reference in verifiable code throws a NullReferenceException exception. AccessViolationExceptionYalnızca doğrulanabilen yönetilen kod, yönetilmeyen kodla veya güvenli olmayan yönetilen kodla etkileşime geçtiğinde gerçekleşir.An AccessViolationException occurs only when verifiable managed code interacts with unmanaged code or with unsafe managed code.

AccessViolationException özel durumları sorunlarını gidermeTroubleshooting AccessViolationException exceptions

AccessViolationExceptionÖzel durum yalnızca güvenli olmayan yönetilen kodda veya doğrulanabilen yönetilen kod yönetilmeyen kodla etkileşime geçtiğinde gerçekleşebilir:An AccessViolationException exception can occur only in unsafe managed code or when verifiable managed code interacts with unmanaged code:

Her iki durumda da, özel durumun nedenini aşağıdaki gibi tanımlayabilir ve düzeltebilirsiniz AccessViolationException :In either case, you can identify and correct the cause of the AccessViolationException exception as follows:

Erişmeye çalıştığınız belleğin ayrıldığınızdan emin olun.Make sure that the memory that you are attempting to access has been allocated. AccessViolationExceptionKorunan belleğe erişme girişimi tarafından her zaman bir özel durum oluşturulur. Bu, ayrılmamış veya bir işleme ait olmayan belleğe erişim.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.

Otomatik bellek yönetimi, ortak dil çalışma zamanının sağladığı hizmetlerden biridir.Automatic memory management is one of the services that the common language runtime provides. Yönetilen kod, yönetilmeyen kodunuzla aynı işlevselliği sağlıyorsa, bu işlevden yararlanmak için yönetilen koda geçmek isteyebilirsiniz.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. Daha fazla bilgi için bkz. Otomatik bellek yönetimi.For more information, see Automatic Memory Management.

Erişmeye çalıştığınız belleğin bozuk olmadığından emin olun.Make sure that the memory that you are attempting to access has not been corrupted. Kötü işaretçiler aracılığıyla birkaç okuma veya yazma işlemi gerçekleştiyse, bellek bozulmuş olabilir.If several read or write operations have occurred through bad pointers, memory may be corrupted. Bu genellikle önceden tanımlanmış bir arabelleğin dışındaki adreslere okurken veya yazarken oluşur.This typically occurs when reading or writing to addresses outside of a predefined buffer.

AccessViolationException ve try/catch bloklarıAccessViolationException and try/catch blocks

.NET Framework 4 ' den başlayarak, AccessViolationException ortak dil çalışma zamanı tarafından oluşturulan özel durumlar, catch özel durum ortak dil çalışma zamanı tarafından ayrılan belleğin dışında oluşursa, yapılandırılmış bir özel durum işleyicisindeki ifade tarafından işlenmez.Starting with .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. Böyle bir AccessViolationException özel durumu işlemek için, HandleProcessCorruptedStateExceptionsAttribute özel durumun oluşturulduğu yönteme özniteliğini uygulayın.To handle such an AccessViolationException exception, apply the HandleProcessCorruptedStateExceptionsAttribute attribute to the method in which the exception is thrown. Bu değişiklik AccessViolationException , Kullanıcı kodu tarafından oluşturulan özel durumları etkilemez, bu, bir ifadesiyle yakalanmak için devam edebilir catch .This change does not affect AccessViolationException exceptions thrown by user code, which can continue to be caught by a catch statement. Yeniden derlemek ve .NET Framework 4 ' te değişiklik yapmadan çalıştırmak istediğiniz .NET Framework önceki sürümleri için yazılan kod için, <legacyCorruptedStateExceptionsPolicy> öğesini uygulamanızın yapılandırma dosyasına ekleyebilirsiniz.For code written for previous versions of .NET Framework that you want to recompile and run without modification on .NET Framework 4, you can add the <legacyCorruptedStateExceptionsPolicy> element to your app's configuration file. Veya olayı için bir işleyici tanımladıysanız özel durumların bildirimini de alabilirsiniz AppDomain.FirstChanceException 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.

Sürüm BilgileriVersion Information

Bu özel durum .NET Framework 2,0 ve sonraki sürümlerde oluşturulur.This exception is thrown on .NET Framework 2.0 and later versions. .NET Framework önceki sürümlerinde, yönetilmeyen koddaki veya güvenli olmayan Yönetilen koddaki erişim ihlali, yönetilen kod ile temsil edilir NullReferenceException .In earlier versions of .NET Framework, an access violation in unmanaged code or unsafe managed code is represented by a NullReferenceException in managed code. Bir NullReferenceException null başvuru, doğrulanabilen yönetilen kodda başvurulduğunu, veri bozulması içermeyen bir oluşumu ve 1,0 veya 1,1 sürümlerindeki iki durum arasında ayrım yapmanın bir yolu yoktur.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.

Yöneticiler seçili uygulamaların .NET Framework sürüm 1,1 davranışına dönüşe erişmesine izin verebilir.Administrators can allow selected applications to revert to the behavior of .NET Framework version 1.1. Uygulamanın yapılandırma dosyasının < çalışma zamanı > öğesi bölümüne aşağıdaki satırı yerleştirin:Place the following line in the <runtime> Element section of the configuration file for the application:

<legacyNullReferenceExceptionPolicy enabled = "1"/>

Oluşturucular

AccessViolationException()

Bir AccessViolationException hatayı açıklayan sistem tarafından sağlanan iletiyle sınıfının yeni bir örneğini başlatır.Initializes a new instance of the AccessViolationException class with a system-supplied message that describes the error.

AccessViolationException(SerializationInfo, StreamingContext)

AccessViolationException sınıfının yeni bir örneğini serileştirilmiş verilerle başlatır.Initializes a new instance of the AccessViolationException class with serialized data.

AccessViolationException(String)

Bir AccessViolationException hatayı açıklayan belirtilen iletiyle sınıfın yeni bir örneğini başlatır.Initializes a new instance of the AccessViolationException class with a specified message that describes the error.

AccessViolationException(String, Exception)

AccessViolationExceptionBelirtilen bir hata iletisiyle sınıfın yeni bir örneğini ve bu özel durumun nedeni olan iç özel duruma bir başvuruyu başlatır.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.

Özellikler

Data

Özel durum hakkında ek kullanıcı tanımlı bilgiler sağlayan anahtar/değer çiftleri koleksiyonunu alır.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Devralındığı yer: Exception)
HelpLink

Bu özel durumla ilişkili Yardım dosyasının bağlantısını alır veya ayarlar.Gets or sets a link to the help file associated with this exception.

(Devralındığı yer: Exception)
HResult

Belirli bir özel duruma atanan kodlanmış bir sayısal değer olan HRESULT 'yi alır veya ayarlar.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Devralındığı yer: Exception)
InnerException

ExceptionGeçerli özel duruma neden olan örneği alır.Gets the Exception instance that caused the current exception.

(Devralındığı yer: Exception)
Message

Geçerli özel durumu açıklayan bir ileti alır.Gets a message that describes the current exception.

(Devralındığı yer: Exception)
Source

Uygulamanın veya hataya neden olan nesnenin adını alır veya ayarlar.Gets or sets the name of the application or the object that causes the error.

(Devralındığı yer: Exception)
StackTrace

Çağrı yığınında anlık çerçevelerin dize gösterimini alır.Gets a string representation of the immediate frames on the call stack.

(Devralındığı yer: Exception)
TargetSite

Geçerli özel durumu oluşturan yöntemi alır.Gets the method that throws the current exception.

(Devralındığı yer: Exception)

Yöntemler

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.Determines whether the specified object is equal to the current object.

(Devralındığı yer: Object)
GetBaseException()

Türetilmiş bir sınıfta geçersiz kılınırsa, Exception bir veya daha fazla sonraki özel durumun kök nedeni olan öğesini döndürür.When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.

(Devralındığı yer: Exception)
GetHashCode()

Varsayılan karma işlevi olarak işlev görür.Serves as the default hash function.

(Devralındığı yer: Object)
GetObjectData(SerializationInfo, StreamingContext)

Türetilmiş bir sınıfta geçersiz kılınırsa, SerializationInfo özel durum hakkındaki bilgileri ayarlar.When overridden in a derived class, sets the SerializationInfo with information about the exception.

(Devralındığı yer: Exception)
GetType()

Geçerli örneğin çalışma zamanı türünü alır.Gets the runtime type of the current instance.

(Devralındığı yer: Exception)
MemberwiseClone()

Geçerli bir basit kopyasını oluşturur Object .Creates a shallow copy of the current Object.

(Devralındığı yer: Object)
ToString()

Geçerli özel durumun dize gösterimini oluşturur ve döndürür.Creates and returns a string representation of the current exception.

(Devralındığı yer: Exception)

Ekinlikler

SerializeObjectState

Özel durum hakkında serileştirilmiş veri içeren bir özel durum nesnesi oluşturmak için bir özel durum serileştirildiğinde gerçekleşir.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Devralındığı yer: Exception)

Şunlara uygulanır