TypeInitializationException Sınıf

Tanım

Sınıf başlatıcısı tarafından oluşturulan özel durum etrafında bir sarmalayıcı olarak oluşturulan özel durum.The exception that is thrown as a wrapper around the exception thrown by the class initializer. Bu sınıf devralınamaz.This class cannot be inherited.

public ref class TypeInitializationException sealed : Exception
public ref class TypeInitializationException sealed : SystemException
public sealed class TypeInitializationException : Exception
public sealed class TypeInitializationException : SystemException
[System.Serializable]
public sealed class TypeInitializationException : SystemException
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class TypeInitializationException : SystemException
type TypeInitializationException = class
    inherit Exception
type TypeInitializationException = class
    inherit SystemException
[<System.Serializable>]
type TypeInitializationException = class
    inherit SystemException
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type TypeInitializationException = class
    inherit SystemException
Public NotInheritable Class TypeInitializationException
Inherits Exception
Public NotInheritable Class TypeInitializationException
Inherits SystemException
Devralma
TypeInitializationException
Devralma
TypeInitializationException
Öznitelikler

Açıklamalar

Bir sınıf Başlatıcısı bir türü başlatamazsa, bir TypeInitializationException oluşturulur ve türün Sınıf başlatıcısı tarafından oluşturulan özel duruma bir başvuru geçirilir.When a class initializer fails to initialize a type, a TypeInitializationException is created and passed a reference to the exception thrown by the type's class initializer. InnerExceptionÖzelliği TypeInitializationException temeldeki özel durumu barındırır.The InnerException property of TypeInitializationException holds the underlying exception.

Genellikle, TypeInitializationException özel durum, bir uygulamanın devam etmesini önleyen bir çok zararlı koşulu yansıtır (çalışma zamanı bir tür örneğini oluşturamıyor).Typically, the TypeInitializationException exception reflects a catastrophic condition (the runtime is unable to instantiate a type) that prevents an application from continuing. En yaygın olarak, TypeInitializationException uygulamanın yürütülmekte olan ortamındaki bazı değişikliğe yanıt olarak oluşturulur.Most commonly, the TypeInitializationException is thrown in response to some change in the executing environment of the application. Sonuç olarak, hata ayıklama kodu sorun gidermede büyük olasılıkla, özel durum bir blokta işlenmemelidir try / catch .Consequently, other than possibly for troubleshooting debug code, the exception should not be handled in a try/catch block. Bunun yerine, özel durumun nedeni araştırılır ve ortadan kalkar.Instead, the cause of the exception should be investigated and eliminated.

TypeInitializationException 0x80131534 değerine sahip HRESULT COR_E_TYPEINITIALIZATION kullanır.TypeInitializationException uses the HRESULT COR_E_TYPEINITIALIZATION, which has the value 0x80131534.

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

Aşağıdaki bölümlerde, bir özel durumun oluşturulduğu bazı durumlar açıklanır TypeInitializationException .The following sections describe some of the situations in which a TypeInitializationException exception is thrown.

Statik oluşturucular ve TypeInitializationExceptionStatic constructors and the TypeInitializationException

Bir statik Oluşturucu varsa, bir türün yeni bir örneği oluşturulmadan önce çalışma zamanı tarafından otomatik olarak çağırılır.A static constructor, if one exists, is called automatically by the runtime before creating a new instance of a type. Statik oluşturucular bir geliştirici tarafından açık bir şekilde tanımlanabilir.Static constructors can be explicitly defined by a developer. Statik bir oluşturucu açıkça tanımlanmamışsa, derleyiciler, türün herhangi birini static (C# ' de) veya Shared (Visual Basic) üyelerini başlatacak şekilde otomatik olarak oluşturur.If a static constructor is not explicitly defined, compilers automatically create one to initialize any static (in C#) or Shared (in Visual Basic) members of the type. Statik oluşturucular hakkında daha fazla bilgi için bkz. statik oluşturucular.For more information on static constructors, see Static Constructors.

En yaygın olarak, bir TypeInitializationException statik oluşturucu bir tür örneklendirileyemedi, bir özel durum oluşturulur.Most commonly, a TypeInitializationException exception is thrown when a static constructor is unable to instantiate a type. InnerExceptionÖzelliği statik oluşturucunun türü neden örnekleyemedi.The InnerException property indicates why the static constructor was unable to instantiate the type. Bir özel durumun daha yaygın nedenleri TypeInitializationException şunlardır:Some of the more common causes of a TypeInitializationException exception are:

  • Statik oluşturucuda işlenmeyen bir özel durumAn unhandled exception in a static constructor

    Statik oluşturucuda bir özel durum oluşturulursa, bu özel durum bir özel durumla sarmalanır TypeInitializationException ve tür başlatılamaz.If an exception is thrown in a static constructor, that exception is wrapped in a TypeInitializationException exception, and the type cannot be instantiated.

    Bu özel durumun ne sıklıkta sorun gidermesi zordur, statik oluşturucuların kaynak kodunda her zaman açık bir şekilde tanımlanmadığı durumdur.What often makes this exception difficult to troubleshoot is that static constructors are not always explicitly defined in source code. Şu durumlarda bir tür statik oluşturucu vardır:A static constructor exists in a type if:

    • Açıkça bir türün üyesi olarak tanımlandı.It has been explicitly defined as a member of a type.

    • Türü, static Shared tek bir ifadede belirtilen ve başlatılan değişkenleri (C# ' de) veya (Visual Basic) değişkenlerini içerir.The type has static (in C#) or Shared (in Visual Basic) variables that are declared and initialized in a single statement. Bu durumda, dil derleyicisi tür için bir statik oluşturucu oluşturur.In this case, the language compiler generates a static constructor for the type. Il ayırıcıgibi bir yardımcı program kullanarak inceleyebilirsiniz.You can inspect it by using a utility such as IL Disassembler. Örneğin, C# ve VB derleyicileri aşağıdaki örneği derlerse şuna benzer bir statik Oluşturucu için Il oluşturur:For instance, when the C# and VB compilers compile the following example, they generate the IL for a static constructor that is similar to this:

    .method private specialname rtspecialname static   
             void  .cctor() cil managed  
    {  
       // Code size       12 (0xc)  
       .maxstack  8  
       IL_0000:  ldc.i4.3  
       IL_0001:  newobj     instance void TestClass::.ctor(int32)  
       IL_0006:  stsfld     class TestClass Example::test  
       IL_000b:  ret  
    } // end of method Example::.cctor  
    

    Aşağıdaki örnek, TypeInitializationException derleyicinin ürettiği bir statik oluşturucu tarafından oluşturulan bir özel durumu gösterir.The following example shows a TypeInitializationException exception thrown by a compiler-generated static constructor. ExampleSınıfı, static Shared TestClass sınıf oluşturucusuna 3 değeri geçirerek örneği oluşturulan türün bir (C#) veya (Visual Basic) alanı içerir.The Example class includes a static (in C#) or Shared (in Visual Basic) field of type TestClass that is instantiated by passing a value of 3 to its class constructor. Ancak, bu değer geçersizdir; yalnızca 0 veya 1 değerlerine izin verilir.That value, however, is illegal; only values of 0 or 1 are permitted. Sonuç olarak, TestClass sınıf Oluşturucusu bir oluşturur ArgumentOutOfRangeException .As a result, the TestClass class constructor throws an ArgumentOutOfRangeException. Bu özel durum işlenmediğinden, bir TypeInitializationException özel durumla sarmalanır.Since this exception is not handled, it is wrapped in a TypeInitializationException exception.

    using System;
    
    public class Example
    {
       private static TestClass test = new TestClass(3);
       
       public static void Main()
       {
          Example ex = new Example();
          Console.WriteLine(test.Value);
       }
    }
    
    public class TestClass
    {
       public readonly int Value;
       
       public TestClass(int value)
       {
          if (value < 0 || value > 1) throw new ArgumentOutOfRangeException();
          Value = value;
       }
    }
    // The example displays the following output:
    //    Unhandled Exception: System.TypeInitializationException: 
    //       The type initializer for 'Example' threw an exception. ---> 
    //       System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
    //       at TestClass..ctor(Int32 value)
    //       at Example..cctor()
    //       --- End of inner exception stack trace ---
    //       at Example.Main()
    
    Public Class Example
       Shared test As New TestClass(3)
       
       Public Shared Sub Main()
          Dim ex As New Example()
          Console.WriteLine(test.Value)
       End Sub
    End Class
    
    Public Class TestClass
       Public ReadOnly Value As Integer
       
       Public Sub New(value As Integer)
          If value < 0 Or value > 1 Then Throw New ArgumentOutOfRangeException()
          Value = value
       End Sub
    End Class
    ' The example displays the following output:
    '    Unhandled Exception: System.TypeInitializationException: 
    '       The type initializer for 'Example' threw an exception. ---> 
    '       System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
    '       at TestClass..ctor(Int32 value)
    '       at Example..cctor()
    '       --- End of inner exception stack trace ---
    '       at Example.Main()
    

    Özel durum iletisinin özellik hakkında bilgi görüntülediğini unutmayın InnerException .Note that the exception message displays information about the InnerException property.

  • Eksik bir bütünleştirilmiş kod veya veri dosyasıA missing assembly or data file

    Bir özel durumun yaygın nedenlerinden biri TypeInitializationException , bir uygulamanın geliştirme ve test ortamlarında mevcut olan bir derleme veya veri dosyasının çalışma zamanı ortamında eksik olması olabilir.A common cause of a TypeInitializationException exception is that an assembly or data file that was present in an application's development and test environments is missing from its runtime environment. Örneğin, bu komut satırı söz dizimini kullanarak Missing1a.dll adlı bir derlemeye aşağıdaki örneği derleyebilirsiniz:For example, you can compile the following example to an assembly named Missing1a.dll by using this command-line syntax:

    csc -t:library Missing1a.cs  
    
    vbc Missing1a.vb -t:library  
    
    using System;
    
    public class InfoModule
    {
       private DateTime firstUse;
       private int ctr = 0;
    
       public InfoModule(DateTime dat)
       {
          firstUse = dat;
       }
       
       public int Increment()
       {
          return ++ctr;
       }
       
       public DateTime GetInitializationTime()
       {
          return firstUse;
       }
    }
    
    Public Class InfoModule
       Private firstUse As DateTime
       Private ctr As Integer = 0
    
       Public Sub New(dat As DateTime)
          firstUse = dat
       End Sub
       
       Public Function Increment() As Integer
          ctr += 1
          Return ctr
       End Function
       
       Public Function GetInitializationTime() As DateTime
          Return firstUse
       End Function
    End Class
    

    Daha sonra, Missing1a.dll bir başvuru ekleyerek Missing1.exe adlı yürütülebilir dosyaya aşağıdaki örneği derleyebilirsiniz:You can then compile the following example to an executable named Missing1.exe by including a reference to Missing1a.dll:

    csc Missing1.cs /r:Missing1a.dll  
    
    vbc Missing1.vb /r:Missing1a.dll  
    

    Ancak, Missing1a.dll yeniden adlandırabilir, taşırsanız veya silerseniz ve örneği çalıştırırsanız, bir TypeInitializationException özel durum oluşturur ve örnekte gösterilen çıktıyı görüntüler.However, if you rename, move, or delete Missing1a.dll and run the example, it throws a TypeInitializationException exception and displays the output shown in the example. Özel durum iletisinin özellik hakkında bilgi içerdiğine unutmayın InnerException .Note that the exception message includes information about the InnerException property. Bu durumda, iç özel durum, FileNotFoundException çalışma zamanı bağımlı derlemeyi bulamadığı için oluşturulur.In this case, the inner exception is a FileNotFoundException that is thrown because the runtime cannot find the dependent assembly.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          Person p = new Person("John", "Doe");
          Console.WriteLine(p);   
       }
    }
    
    public class Person
    {
       static InfoModule infoModule;
       
       String fName;
       String mName;
       String lName;
       
       static Person()
       {
          infoModule = new InfoModule(DateTime.UtcNow);
       }
       
       public Person(String fName, String lName)
       {
          this.fName = fName;
          this.lName = lName;
          infoModule.Increment();
       }
       
       public override String ToString()
       {
          return String.Format("{0} {1}", fName, lName);
       }
    }
    // The example displays the following output if missing1a.dll is renamed or removed:
    //    Unhandled Exception: System.TypeInitializationException: 
    //       The type initializer for 'Person' threw an exception. ---> 
    //       System.IO.FileNotFoundException: Could not load file or assembly 
    //       'Missing1a, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' 
    //       or one of its dependencies. The system cannot find the file specified.
    //       at Person..cctor()
    //       --- End of inner exception stack trace ---
    //       at Person..ctor(String fName, String lName)
    //       at Example.Main()
    
    Module Example
       Public Sub Main()
          Dim p As New Person("John", "Doe")
          Console.WriteLine(p)   
       End Sub
    End Module
    
    Public Class Person
       Shared infoModule As InfoModule
       
       Dim fName As String
       Dim mName As String
       Dim lName As String
       
       Shared Sub New()
          infoModule = New InfoModule(DateTime.UtcNow)
       End Sub
       
       Public Sub New(fName As String, lName As String)
          Me.fName = fName
          Me.lName = lName
          infoModule.Increment()
       End Sub
       
       Public Overrides Function ToString() As String
          Return String.Format("{0} {1}", fName, lName)
       End Function
    End Class
    ' The example displays the following output if missing1a.dll is renamed or removed:
    '    Unhandled Exception: System.TypeInitializationException: 
    '       The type initializer for 'Person' threw an exception. ---> 
    '       System.IO.FileNotFoundException: Could not load file or assembly 
    '       'Missing1a, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' 
    '       or one of its dependencies. The system cannot find the file specified.
    '       at Person..cctor()
    '       --- End of inner exception stack trace ---
    '       at Person..ctor(String fName, String lName)
    '       at Example.Main()
    

    Not

    Bu örnekte, TypeInitializationException bir derleme yüklenemediği için bir özel durum oluşturuldu.In this example, a TypeInitializationException exception was thrown because an assembly could not be loaded. Statik bir Oluşturucu bir yapılandırma dosyası, bir XML dosyası veya seri hale getirilen verileri içeren bir dosya gibi bir veri dosyasını açmaya çalışırsa, bu durum da oluşabilir.The exception can also be thrown if a static constructor attempts to open a data file, such as a configuration file, an XML file, or a file containing serialized data, that it cannot find.

Normal ifade eşleştirme zaman aşımı değerleriRegular expression match timeout values

Bir normal ifade deseninin eşleştirme işlemi için varsayılan zaman aşımı değerini uygulama başına etki alanı temelinde ayarlayabilirsiniz.You can set the default timeout value for a regular expression pattern matching operation on a per-application domain basis. Zaman aşımı, TimeSpan yöntemin "REGEX_DEFAULT_MATCH_TIMEOUT" özelliği için bir değer belirtilerek tanımlanır AppDomain.SetData .The timeout is defined by a specifying a TimeSpan value for the "REGEX_DEFAULT_MATCH_TIMEOUT" property to the AppDomain.SetData method. Zaman aralığı, TimeSpan sıfırdan büyük ve yaklaşık 24 günden az olan geçerli bir nesne olmalıdır.The time interval must be a valid TimeSpan object that is greater than zero and less than approximately 24 days. Bu gereksinimler karşılanmazsa, varsayılan zaman aşımı değerini ayarlama girişimi bir ArgumentOutOfRangeException özel durum içine sarılan bir atar TypeInitializationException .If these requirements are not met, the attempt to set the default timeout value throws an ArgumentOutOfRangeException, which in turn is wrapped in a TypeInitializationException exception.

Aşağıdaki örnek, TypeInitializationException "REGEX_DEFAULT_MATCH_TIMEOUT" özelliğine atanan değer geçersiz olduğunda oluşturulan öğesini gösterir.The following example shows the TypeInitializationException that is thrown when the value assigned to the "REGEX_DEFAULT_MATCH_TIMEOUT" property is invalid. Özel durumu ortadan kaldırmak için, "REGEX_DEFAULT_MATCH_TIMEOUT" özelliğini TimeSpan sıfırdan büyük ve yaklaşık 24 günden az bir değere ayarlayın.To eliminate the exception, set the"REGEX_DEFAULT_MATCH_TIMEOUT" property to a TimeSpan value that is greater than zero and less than approximately 24 days.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      AppDomain domain = AppDomain.CurrentDomain;
      // Set a timeout interval of -2 seconds.
      domain.SetData("REGEX_DEFAULT_MATCH_TIMEOUT", TimeSpan.FromSeconds(-2));

      Regex rgx = new Regex("[aeiouy]");
      Console.WriteLine("Regular expression pattern: {0}", rgx.ToString());
      Console.WriteLine("Timeout interval for this regex: {0} seconds",
                        rgx.MatchTimeout.TotalSeconds);
   }
}
// The example displays the following output:
//    Unhandled Exception: System.TypeInitializationException: 
//       The type initializer for 'System.Text.RegularExpressions.Regex' threw an exception. ---> 
//       System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
//       Parameter name: AppDomain data 'REGEX_DEFAULT_MATCH_TIMEOUT' contains an invalid value or 
//       object for specifying a default matching timeout for System.Text.RegularExpressions.Regex.
//       at System.Text.RegularExpressions.Regex.InitDefaultMatchTimeout()
//       at System.Text.RegularExpressions.Regex..cctor()
//       --- End of inner exception stack trace ---
//       at System.Text.RegularExpressions.Regex..ctor(String pattern)
//       at Example.Main()
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim domain As AppDomain = AppDomain.CurrentDomain
      ' Set a timeout interval of -2 seconds.
      domain.SetData("REGEX_DEFAULT_MATCH_TIMEOUT", TimeSpan.FromSeconds(-2))

      Dim rgx As New Regex("[aeiouy]")
      Console.WriteLine("Regular expression pattern: {0}", rgx.ToString())
      Console.WriteLine("Timeout interval for this regex: {0} seconds",
                        rgx.MatchTimeout.TotalSeconds)
   End Sub
End Module
' The example displays the following output:
'    Unhandled Exception: System.TypeInitializationException: 
'       The type initializer for 'System.Text.RegularExpressions.Regex' threw an exception. ---> 
'       System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
'       Parameter name: AppDomain data 'REGEX_DEFAULT_MATCH_TIMEOUT' contains an invalid value or 
'       object for specifying a default matching timeout for System.Text.RegularExpressions.Regex.
'       at System.Text.RegularExpressions.Regex.InitDefaultMatchTimeout()
'       at System.Text.RegularExpressions.Regex..cctor()
'       --- End of inner exception stack trace ---
'       at System.Text.RegularExpressions.Regex..ctor(String pattern)
'       at Example.Main()

Takvimler ve kültürel verileriCalendars and cultural data

Bir takvim örneğini oluşturmaya çalışırsanız, ancak çalışma zamanı CultureInfo Bu takvime karşılık gelen nesneyi örnekleyemedi, bir TypeInitializationException özel durum oluşturur.If you attempt to instantiate a calendar but the runtime is unable to instantiate the CultureInfo object that corresponds to that calendar, it throws a TypeInitializationException exception. Bu özel durum aşağıdaki takvim sınıfı oluşturucuları tarafından oluşturulabilir:This exception can be thrown by the following calendar class constructors:

Bu kültürlerin kültürel verileri tüm sistemlerde kullanılabilir olmalıdır, ancak bu özel durumla karşılaşmanız gerekir.Since cultural data for these cultures should be available on all systems, you should rarely, if ever, encounter this exception.

Oluşturucular

TypeInitializationException(String, Exception)

TypeInitializationExceptionVarsayılan hata iletisiyle sınıfının yeni bir örneğini, belirtilen tür adını ve bu özel durumun kök nedeni olan iç özel duruma bir başvuruyu başlatır.Initializes a new instance of the TypeInitializationException class with the default error message, the specified type name, and a reference to the inner exception that is the root 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)
TypeName

Başlatması başarısız olan türün tam nitelikli adını alır.Gets the fully qualified name of the type that fails to initialize.

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)

SerializationInfoNesneyi tür adı ve ek özel durum bilgileri ile ayarlar.Sets the SerializationInfo object with the type name and additional exception information.

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.