OutOfMemoryException Sınıf

Tanım

Bir programın yürütülmesine devam etmek için yeterli bellek olmadığında oluşturulan özel durum.The exception that is thrown when there is not enough memory to continue the execution of a program.

public ref class OutOfMemoryException : Exception
public ref class OutOfMemoryException : SystemException
public class OutOfMemoryException : Exception
public class OutOfMemoryException : SystemException
[System.Serializable]
public class OutOfMemoryException : SystemException
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class OutOfMemoryException : SystemException
type OutOfMemoryException = class
    inherit Exception
type OutOfMemoryException = class
    inherit SystemException
[<System.Serializable>]
type OutOfMemoryException = class
    inherit SystemException
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type OutOfMemoryException = class
    inherit SystemException
Public Class OutOfMemoryException
Inherits Exception
Public Class OutOfMemoryException
Inherits SystemException
Devralma
OutOfMemoryException
Devralma
OutOfMemoryException
Türetilmiş
Öznitelikler

Açıklamalar

OutOfMemoryExceptionCOR_E_OUTOFMEMORY0x8007000E değerine sahip olan HRESULT 'yi kullanır.OutOfMemoryException uses the HRESULT COR_E_OUTOFMEMORY, which has the value 0x8007000E.

Bir örneğinin ilk özellik değerlerinin listesi için OutOfMemoryException , OutOfMemoryException oluşturuculara bakın.For a list of initial property values for an instance of OutOfMemoryException, see the OutOfMemoryException constructors.

Not

Devralınan Data özelliğin değeri her zaman null .The value of the inherited Data property is always null.

Bir OutOfMemoryException özel durumun başlıca iki nedeni vardır:An OutOfMemoryException exception has two major causes:

  • StringBuilderÖzelliği tarafından tanımlanan uzunluğun ötesinde bir nesneyi genişletmeye çalışıyorsunuz StringBuilder.MaxCapacity .You are attempting to expand a StringBuilder object beyond the length defined by its StringBuilder.MaxCapacity property.

  • Ortak dil çalışma zamanı, bir işlemi başarılı bir şekilde gerçekleştirmek için yeterli bitişik bellek ayıramaz.The common language runtime cannot allocate enough contiguous memory to successfully perform an operation. Bu özel durum, bir bellek ayırma gerektiren herhangi bir özellik atama veya yöntem çağrısıyla oluşturulabilir.This exception can be thrown by any property assignment or method call that requires a memory allocation. Özel durumun nedeni hakkında daha fazla bilgi için OutOfMemoryException , bkz. blog gönderisi "bellek yetersiz" fiziksel belleğe başvurmuyor.For more information on the cause of the OutOfMemoryException exception, see the blog post "Out of Memory" Does Not Refer to Physical Memory.

    Bu tür OutOfMemoryException bir özel durum, çok zararlı bir hatayı temsil eder.This type of OutOfMemoryException exception represents a catastrophic failure. Özel durumu işlemek isterseniz, catch Environment.FailFast Aşağıdaki örnekte olduğu gibi uygulamanızı sonlandırmak ve sistem olay günlüğüne bir giriş eklemek için yöntemini çağıran bir blok dahil etmelisiniz.If you choose to handle the exception, you should include a catch block that calls the Environment.FailFast method to terminate your app and add an entry to the system event log, as the following example does.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          try {
             // Outer block to handle any unexpected exceptions.
             try {
                string s = "This";
                s = s.Insert(2, "is ");
    
                // Throw an OutOfMemoryException exception.
                throw new OutOfMemoryException();
             }
             catch (ArgumentException) {
                Console.WriteLine("ArgumentException in String.Insert");
             }
    
             // Execute program logic.
          }
          catch (OutOfMemoryException e) {
             Console.WriteLine("Terminating application unexpectedly...");
             Environment.FailFast(String.Format("Out of Memory: {0}",
                                                e.Message));
          }
       }
    }
    // The example displays the following output:
    //        Terminating application unexpectedly...
    
    Module Example
       Public Sub Main()
          Try
             ' Outer block to handle any unexpected exceptions.
             Try
                Dim s As String = "This"
                s = s.Insert(2, "is ")
    
                ' Throw an OutOfMemoryException exception.
                Throw New OutOfMemoryException()
             Catch e As ArgumentException
                Console.WriteLine("ArgumentException in String.Insert")
             End Try
             
             ' Execute program logic.
    
          Catch e As OutOfMemoryException
             Console.WriteLine("Terminating application unexpectedly...")
             Environment.FailFast(String.Format("Out of Memory: {0}",
                                                e.Message))
          End Try
       End Sub
    End Module
    ' The example displays the following output:
    '       Terminating application unexpectedly...
    

Özel durumun oluşturulduğu bazı koşullar ve bunu ortadan kaldırmak için gerçekleştirebileceğiniz eylemler şunları içerir:Some of the conditions under which the exception is thrown and the actions you can take to eliminate it include the following:

StringBuilder.InsertYöntemi çağrılıyor.You are calling the StringBuilder.Insert method.

StringBuilderÖzelliği tarafından belirtilen boyutun ötesinde bir nesnenin uzunluğunu artırmaya çalışıyorsunuz StringBuilder.MaxCapacity .You are attempting to increase the length of a StringBuilder object beyond the size specified by its StringBuilder.MaxCapacity property. Aşağıdaki örnek, örnek, OutOfMemoryException StringBuilder.Insert(Int32, String, Int32) nesnenin Length özelliğinin en fazla kapasitesini aşmasına neden olacak bir dize eklemeye çalıştığında, yöntemi çağrısıyla oluşturulan özel durumu gösterir.The following example illustrates the OutOfMemoryException exception thrown by a call to the StringBuilder.Insert(Int32, String, Int32) method when the example tries to insert a string that would cause the object's Length property to exceed its maximum capacity.

using System;
using System.Text;

public class Example
{
   public static void Main()
   {
      StringBuilder sb = new StringBuilder(15, 15);
      sb.Append("Substring #1 ");
      try {
         sb.Insert(0, "Substring #2 ", 1);
      }
      catch (OutOfMemoryException e) {
         Console.WriteLine("Out of Memory: {0}", e.Message);
      }
   }
}
// The example displays the following output:
//    Out of Memory: Insufficient memory to continue the execution of the program.
Imports System.Text

Module Example
   Public Sub Main()
      Dim sb As New StringBuilder(15, 15)
      sb.Append("Substring #1 ")
      Try
         sb.Insert(0, "Substring #2 ", 1)
      Catch e As OutOfMemoryException
         Console.WriteLine("Out of Memory: {0}", e.Message)
      End Try
   End Sub
End Module
' The example displays the following output:
'   Out of Memory: Insufficient memory to continue the execution of the program.

Hatayı gidermek için aşağıdakilerden birini yapabilirsiniz:You can do either of the following to address the error:

Uygulamanız 32 bitlik bir işlem olarak çalışır.Your app runs as a 32-bit process.

32-bit süreçler, 32 bit sistemlerde en fazla 2 GB sanal kullanıcı modu belleği ve 64 bit sistemlerde 4 GB sanal kullanıcı modu belleği ayırır.32-bit processes can allocate a maximum of 2GB of virtual user-mode memory on 32-bit systems, and 4GB of virtual user-mode memory on 64-bit systems. Bu, büyük bir ayırma gerektiğinde ortak dil çalışma zamanının yeterli bitişik bellek ayırmasına daha zor hale getirir.This can make it more difficult for the common language runtime to allocate sufficient contiguous memory when a large allocation is needed. Buna karşılık, 64 bitlik süreçler 8TB 'a kadar sanal bellek ayırabilir.In contrast, 64-bit processes can allocate up to 8TB of virtual memory. Bu özel duruma yönelik olarak, 64 bitlik bir platformu hedeflemek için uygulamanızı yeniden derleyin.To address this exception, recompile your app to target a 64-bit platform. Visual Studio 'da belirli platformları hedefleme hakkında daha fazla bilgi için bkz. nasıl yapılır: projeleri hedef platformları Için yapılandırma.For information on targeting specific platforms in Visual Studio, see How to: Configure Projects to Target Platforms.

Uygulamanız yönetilmeyen kaynakları sızdırıyorYour app is leaking unmanaged resources

Çöp toplayıcı yönetilen türlere ayrılan belleği serbest edebilse de, işletim sistemi tanıtıcıları (dosyalara yönelik işleyiciler, bellek eşlemeli dosyalar, kanallar, kayıt defteri anahtarları ve bekleme tanıtıcıları dahil) ve doğrudan Windows API çağrıları tarafından ayrılan bellek blokları ve gibi bellek ayırma işlevlerine yapılan çağrılar gibi yönetilmeyen kaynaklara ayrılan belleği yönetmez malloc .Although the garbage collector is able to free memory allocated to managed types, it does not manage memory allocated to unmanaged resources such as operating system handles (including handles to files, memory-mapped files, pipes, registry keys, and wait handles) and memory blocks allocated directly by Windows API calls or by calls to memory allocation functions such as malloc. Yönetilmeyen kaynakları kullanan türler IDisposable arabirimini uygular.Types that consume unmanaged resources implement the IDisposable interface.

Yönetilmeyen kaynakları kullanan bir tür kullanıyorsanız, IDisposable.Dispose kullanmayı bitirdiğinizde yöntemini çağırmanız gerekir.If you are consuming a type that uses unmanaged resources, you should be sure to call its IDisposable.Dispose method when you have finished using it. (Bazı türler aynı zamanda Close işlevinde bir yönteme benzer bir yöntemi de uygular Dispose .) Daha fazla bilgi için, IDisposable uygulayan nesneleri kullanma konusuna bakın.(Some types also implement a Close method that is identical in function to a Dispose method.) For more information, see the Using Objects That Implement IDisposable topic.

Yönetilmeyen kaynakları kullanan bir tür oluşturduysanız, Dispose modelini uyguladığınızdan ve gerekirse sonlandırıcının sağlanmış olduğundan emin olun.If you have created a type that uses unmanaged resources, make sure that you have implemented the Dispose pattern and, if necessary, supplied a finalizer. Daha fazla bilgi için bkz. Dispose yöntemi uygulama ve Object.Finalize .For more information, see Implementing a Dispose method and Object.Finalize.

64 bitlik bir işlemde büyük bir dizi oluşturmaya çalışıyorsunuzYou are attempting to create a large array in a 64-bit process

Varsayılan olarak, .NET Framework içindeki ortak dil çalışma zamanı, boyutu 2 GB 'ı aşan tek nesnelere izin vermez.By default, the common language runtime in .NET Framework does not allow single objects whose size exceeds 2GB. Bu varsayılanı geçersiz kılmak için <gcAllowVeryLargeObjects> yapılandırma dosyası ayarını, toplam boyutu 2 GB 'ı aşan dizileri etkinleştirmek için kullanabilirsiniz.To override this default, you can use the <gcAllowVeryLargeObjects> configuration file setting to enable arrays whose total size exceeds 2 GB. .NET Core 'da 2 GB 'den büyük diziler için destek varsayılan olarak etkindir.On .NET Core, support for arrays of greater than 2 GB is enabled by default.

Bellekte çok büyük veri kümeleri (diziler, koleksiyonlar veya veritabanı veri kümeleri gibi) ile çalışıyorsunuz.You are working with very large sets of data (such as arrays, collections, or database data sets) in memory.

Bellekte bulunan veri yapıları veya veri kümeleri, ortak dil çalışma zamanının bunlar için yeterli sayıda bitişik bellek ayıramayacağı kadar büyük olur ve OutOfMemoryException özel durum oluşur.When data structures or data sets that reside in memory become so large that the common language runtime is unable to allocate enough contiguous memory for them, an OutOfMemoryException exception results.

OutOfMemoryExceptionÖzel durumları engellemek için, uygulamanızı daha az veri bellekte yerleşik olacak şekilde değiştirmeniz veya verilerin daha küçük bellek ayırmaları gerektiren kesimlere bölünmesi gerekir.To prevent the OutOfMemoryException exceptions, you must modify your application so that less data is resident in memory, or the data is divided into segments that require smaller memory allocations. Örnek:For example:

  • Bir veritabanından tüm verileri alıyorsanız ve sonra sunucuya yapılan gelişleri en aza indirmek üzere uygulamanızda filtreleyerek, sorgularınızı yalnızca uygulamanızın ihtiyaç duyacağı verilerin alt kümesini döndürecek şekilde değiştirmelisiniz.If you are retrieving all of the data from a database and then filtering it in your app to minimize trips to the server, you should modify your queries to return only the subset of data that your app needs. Büyük tablolarla çalışırken, birden çok sorgu neredeyse her zaman daha etkilidir ve tek bir tablodaki tüm verileri almak ve sonra bunları değiştirmek daha etkilidir.When working with large tables, multiple queries are almost always more efficient than retrieving all of the data in a single table and then manipulating it.

  • Kullanıcıların dinamik olarak oluşturduğu sorgular yürütülüyorsunuz, sorgu tarafından döndürülen kayıt sayısının sınırlı olduğundan emin olmanız gerekir.If you are executing queries that users create dynamically, you should ensure that the number of records returned by the query is limited.

  • Büyük diziler veya boyutu bir özel durumla sonuçlanan diğer koleksiyon nesneleri kullanıyorsanız OutOfMemoryException , uygulamanızı tek seferde çalışmak yerine alt kümeler halinde çalışacak şekilde değiştirmeniz gerekir.If you are using large arrays or other collection objects whose size results in an OutOfMemoryException exception, you should modify your application to work the data in subsets rather than to work with it all at once.

Aşağıdaki örnek 200.000.000 kayan nokta değerlerinden oluşan bir dizi alır ve sonra bunların ortalama değerini hesaplar.The following example gets a array that consists of 200 million floating-point values and then calculates their mean. Örneğin çıktısı, örneğin bir diziyi hesaplamadan önce tüm diziyi bellekte depoladığından, bir OutOfMemoryException atılır.The output from the example shows that, because the example stores the entire array in memory before it calculates the mean, an OutOfMemoryException is thrown.

using System;
using System.Collections.Generic;

public class Example
{
   public static void Main()
   {
      Double[] values = GetData();
      // Compute mean.
      Console.WriteLine("Sample mean: {0}, N = {1}",
                        GetMean(values), values.Length);
   }

   private static Double[] GetData()
   {
      Random rnd = new Random();
      List<Double> values = new List<Double>();
      for (int ctr = 1; ctr <= 200000000; ctr++) {
         values.Add(rnd.NextDouble());
         if (ctr % 10000000 == 0)
            Console.WriteLine("Retrieved {0:N0} items of data.",
                              ctr);
      }
      return values.ToArray();
   }

   private static Double GetMean(Double[] values)
   {
      Double sum = 0;
      foreach (var value in values)
         sum += value;

      return sum / values.Length;
   }
}
// The example displays output like the following:
//    Retrieved 10,000,000 items of data.
//    Retrieved 20,000,000 items of data.
//    Retrieved 30,000,000 items of data.
//    Retrieved 40,000,000 items of data.
//    Retrieved 50,000,000 items of data.
//    Retrieved 60,000,000 items of data.
//    Retrieved 70,000,000 items of data.
//    Retrieved 80,000,000 items of data.
//    Retrieved 90,000,000 items of data.
//    Retrieved 100,000,000 items of data.
//    Retrieved 110,000,000 items of data.
//    Retrieved 120,000,000 items of data.
//    Retrieved 130,000,000 items of data.
//
//    Unhandled Exception: OutOfMemoryException.
Imports System.Collections.Generic

Module Example
   Public Sub Main()
      Dim values() As Double = GetData()
      ' Compute mean.
      Console.WriteLine("Sample mean: {0}, N = {1}",
                        GetMean(values), values.Length)
   End Sub
   
   Private Function GetData() As Double()
      Dim rnd As New Random()
      Dim values As New List(Of Double)()
      For ctr As Integer = 1 To 200000000
         values.Add(rnd.NextDouble)
         If ctr Mod 10000000 = 0 Then
            Console.WriteLine("Retrieved {0:N0} items of data.",
                              ctr)
         End If
      Next
      Return values.ToArray()
   End Function
   
   Private Function GetMean(values() As Double) As Double
      Dim sum As Double = 0
      For Each value In values
         sum += value
      Next
      Return sum / values.Length
   End Function
End Module
' The example displays output like the following:
'    Retrieved 10,000,000 items of data.
'    Retrieved 20,000,000 items of data.
'    Retrieved 30,000,000 items of data.
'    Retrieved 40,000,000 items of data.
'    Retrieved 50,000,000 items of data.
'    Retrieved 60,000,000 items of data.
'    Retrieved 70,000,000 items of data.
'    Retrieved 80,000,000 items of data.
'    Retrieved 90,000,000 items of data.
'    Retrieved 100,000,000 items of data.
'    Retrieved 110,000,000 items of data.
'    Retrieved 120,000,000 items of data.
'    Retrieved 130,000,000 items of data.
'
'    Unhandled Exception: OutOfMemoryException.

Aşağıdaki örnek, OutOfMemoryException tüm veri kümesini bellekte depolamadan, verileri daha fazla işlemeye izin vermek için gerekli olursa verileri bir dosyaya serileştirerek özel durumu ortadan kaldırır (Bu satırlar, boyutu 1 GB 'tan büyük olan bir dosya oluşturur, bu durumda, bu durumda, bu durum değeri 1GB) ve hesaplanan ortalama ve durum sayısını çağıran yordama döndürür.The following example eliminates the OutOfMemoryException exception by processing the incoming data without storing the entire data set in memory, serializing the data to a file if necessary to permit further processing (these lines are commented out in the example, since in this case they produce a file whose size is greater than 1GB), and returning the calculated mean and the number of cases to the calling routine.

using System;
using System.IO;

public class Example
{
   public static void Main()
   {
      Tuple<Double, long> result = GetResult();
      Console.WriteLine("Sample mean: {0}, N = {1:N0}",
                        result.Item1, result.Item2);
   }

   private static Tuple<Double, long> GetResult()
   {
      int chunkSize = 50000000;
      int nToGet = 200000000;
      Random rnd = new Random();
      // FileStream fs = new FileStream(@".\data.bin", FileMode.Create);
      // BinaryWriter bin = new BinaryWriter(fs);
      // bin.Write((int)0);
      int n = 0;
      Double sum = 0;
      for (int outer = 0;
           outer <= ((int) Math.Ceiling(nToGet * 1.0 / chunkSize) - 1);
           outer++) {
         for (int inner = 0;
              inner <= Math.Min(nToGet - n - 1, chunkSize - 1);
              inner++) {
            Double value = rnd.NextDouble();
            sum += value;
            n++;
            // bin.Write(value);
         }
      }
      // bin.Seek(0, SeekOrigin.Begin);
      // bin.Write(n);
      // bin.Close();
      return new Tuple<Double, long>(sum/n, n);
   }
}
// The example displays output like the following:
//    Sample mean: 0.500022771458399, N = 200,000,000
Imports System.IO

Module Example
   Public Sub Main()
      Dim result As Tuple(Of Double, Long) = GetResult()
      Console.WriteLine("Sample mean: {0}, N = {1:N0}",
                        result.Item1, result.Item2)
   End Sub

   Private Function GetResult As Tuple(Of Double, Long)
      Dim chunkSize As Integer = 50000000
      Dim nToGet As Integer = 200000000
      Dim rnd As New Random()
'       Dim fs As New FileStream(".\data.bin", FileMode.Create)
'       Dim bin As New BinaryWriter(fs)
'       bin.Write(CInt(0))
      Dim n As Integer
      Dim sum As Double
      For outer As Integer = 0 To CInt(Math.Ceiling(nToGet/chunkSize) - 1)
         For inner = 0 To Math.Min(nToGet - n - 1, chunkSize - 1)
            Dim value As Double = rnd.NextDouble()
            sum += value
            n += 1
'            bin.Write(value)
         Next
      Next
'       bin.Seek(0, SeekOrigin.Begin)
'       bin.Write(n)
'       bin.Close()
      Return New Tuple(Of Double, Long)(sum/n, n)
   End Function
End Module
' The example displays output like the following:
'   Sample mean: 0.500022771458399, N = 200,000,000

Büyük dizeleri tekrar tekrar birleştirirken.You are repeatedly concatenating large strings.

Dizeler sabit olduğundan, her dize birleştirme işlemi yeni bir dize oluşturur.Because strings are immutable, each string concatenation operation creates a new string. Küçük dizelerin veya az sayıda birleştirme işlemi için etkisi, göz ardı edilebilir.The impact for small strings, or for a small number of concatenation operations, is negligible. Ancak büyük dizeler veya çok fazla sayıda birleştirme işlemi için, dize birleştirme çok sayıda bellek ayırmaya ve bellek parçalanmasına, düşük performansa ve büyük olasılıkla OutOfMemoryException özel durumlara yol açabilir.But for large strings or a very large number of concatenation operations, string concatenation can lead to a large number of memory allocations and memory fragmentation, poor performance, and possibly OutOfMemoryException exceptions.

Büyük dizeleri birleştirirken veya çok sayıda birleştirme işlemi gerçekleştirirken, sınıfı StringBuilder yerine sınıfını kullanmanız gerekir String .When concatenating large strings or performing a large number of concatenation operations, you should use the StringBuilder class instead of the String class. Dizeyi işleme bittiğinde, StringBuilder yöntemini çağırarak örneği bir dizeye dönüştürün StringBuilder.ToString .When you have finished manipulating the string, convert the StringBuilder instance to a string by calling the StringBuilder.ToString method.

Bellekte çok sayıda nesne sabitleyebilir.You pin a large number of objects in memory.

Uzun süreler için çok sayıda nesneyi belleğe sabitleme, çöp toplayıcısının ardışık bellek bloklarını ayırmasını zorlaştırır.Pinning a large number of objects in memory for long periods can make it difficult for the garbage collector to allocate contiguous blocks of memory. Bellekte çok sayıda nesneyi sabitlediyseniz (örneğin, fixed C# ' de ifadesini kullanarak veya GCHandle.Alloc(Object, GCHandleType) metodunu tanıtıcı türüyle çağırarak), GCHandleType.Pinned özel durumu çözmek için aşağıdakileri yapabilirsiniz OutOfMemoryException .If you've pinned a large number of objects in memory, for example by using the fixed statement in C# or by calling the GCHandle.Alloc(Object, GCHandleType) method with a handle type of GCHandleType.Pinned, you can do the following to address the OutOfMemoryException exception.

  • Her nesnenin gerçekten sabitlenmiş olması gerekip gerekmediğini değerlendirin,Evaluate whether each object really needs to be pinned,

  • Her nesnenin mümkün olan en kısa sürede sabitlenmemiş olduğundan emin olun.Ensure that each object is unpinned as soon as possible.

  • Belleği sabitleme yöntemine yapılan her çağrının, GCHandle.Alloc(Object, GCHandleType) GCHandle.Free bu belleği serbest bırakmak için yöntemine karşılık gelen bir çağrıya sahip olduğundan emin olun.Make sure that each call to the GCHandle.Alloc(Object, GCHandleType) method to pin memory has a corresponding call to the GCHandle.Free method to unpin that memory.

Aşağıdaki Microsoft ara (MSIL) yönergeleri bir OutOfMemoryException özel durum oluşturur:The following Microsoft intermediate (MSIL) instructions throw an OutOfMemoryException exception:

Oluşturucular

OutOfMemoryException()

OutOfMemoryException sınıfının yeni bir örneğini başlatır.Initializes a new instance of the OutOfMemoryException class.

OutOfMemoryException(SerializationInfo, StreamingContext)

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

OutOfMemoryException(String)

Belirtilen bir hata iletisiyle sınıfın yeni bir örneğini başlatır OutOfMemoryException .Initializes a new instance of the OutOfMemoryException class with a specified error message.

OutOfMemoryException(String, Exception)

OutOfMemoryExceptionBelirtilen 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 OutOfMemoryException 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

Ayrıca bkz.