TypeInitializationException TypeInitializationException TypeInitializationException TypeInitializationException Class

Определение

Исключение, которое выбрасывается как оболочка для исключения, выброшенного инициализатором класса.The exception that is thrown as a wrapper around the exception thrown by the class initializer. Этот класс не наследуется.This class cannot be inherited.

public ref class TypeInitializationException sealed : SystemException
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public sealed class TypeInitializationException : SystemException
type TypeInitializationException = class
    inherit SystemException
Public NotInheritable Class TypeInitializationException
Inherits SystemException
Наследование
TypeInitializationExceptionTypeInitializationExceptionTypeInitializationExceptionTypeInitializationException
Атрибуты

Комментарии

Если инициализация типа инициализатором класса завершилась сбоем, то будет создан объект TypeInitializationException, которому будет передана ссылка на исключение, созданное инициализатором класса этого типа.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 Свойство TypeInitializationException базовое исключение заносится в.The InnerException property of TypeInitializationException holds the underlying exception.

Как правило TypeInitializationException исключение отражает катастрофической условие (среда выполнения не удалось создать экземпляр типа), препятствующая продолжению приложения.Typically, the TypeInitializationException exception reflects a catastrophic condition (the runtime is unable to instantiate a type) that prevents an application from continuing. Чаще всего TypeInitializationException вызывается в ответ на некоторые изменения в среде выполнения приложения.Most commonly, the TypeInitializationException is thrown in response to some change in the executing environment of the application. Следовательно, отличных от возможно для устранения неполадок отладки кода, исключение не должен обрабатываться в try / catch блока.Consequently, other than possibly for troubleshooting debug code, the exception should not be handled in a try/catch block. Вместо этого причину исключения следует изучить и устранить.Instead, the cause of the exception should be investigated and eliminated.

TypeInitializationException использует COR_E_TYPEINITIALIZATION HRESULT, которое имеет значение 0x80131534.TypeInitializationException uses the HRESULT COR_E_TYPEINITIALIZATION, which has the value 0x80131534.

Список начальных значений свойств для экземпляра TypeInitializationException, см. в разделе TypeInitializationException конструкторы.For a list of initial property values for an instance of TypeInitializationException, see the TypeInitializationException constructors.

В следующих разделах описаны некоторые ситуации, в которой TypeInitializationException возникает исключение.The following sections describe some of the situations in which a TypeInitializationException exception is thrown.

Статические конструкторы и TypeInitializationExceptionStatic constructors and the TypeInitializationException

Статический конструктор, если таковой существует, вызывается автоматически средой выполнения до создания экземпляра типа.A static constructor, if one exists, is called automatically by the runtime before creating a new instance of a type. Статические конструкторы можно явным образом определить разработчиком.Static constructors can be explicitly defined by a developer. Если статический конструктор не определена явно, компиляторы автоматически создан для инициализации любых static (в C#) или Shared (в Visual Basic) члены типа.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. Дополнительные сведения о статических конструкторов, см. в разделе статические конструкторы.For more information on static constructors, see Static Constructors.

Чаще всего TypeInitializationException исключение вызывается, когда статический конструктор не может создать экземпляр типа.Most commonly, a TypeInitializationException exception is thrown when a static constructor is unable to instantiate a type. InnerException Свойство указывает, почему статического конструктора не удалось создать экземпляр типа.The InnerException property indicates why the static constructor was unable to instantiate the type. Некоторые из наиболее распространенных причин TypeInitializationException , исключение:Some of the more common causes of a TypeInitializationException exception are:

  • Необработанное исключение в статическом конструктореAn unhandled exception in a static constructor

    Если в статическом конструкторе создается исключение, это исключение заключается в TypeInitializationException исключения и тип не может быть создан.If an exception is thrown in a static constructor, that exception is wrapped in a TypeInitializationException exception, and the type cannot be instantiated.

    Часто это исключение трудны в отладке в том, что всегда явным образом статические конструкторы не определены в исходном коде.What often makes this exception difficult to troubleshoot is that static constructors are not always explicitly defined in source code. Статический конструктор существует в типе, если:A static constructor exists in a type if:

    • Он был явно определен как члена типа.It has been explicitly defined as a member of a type.

    • Тип имеет static (в C#) или Shared (в Visual Basic) переменные, которые объявляются и инициализируются в одной инструкции.The type has static (in C#) or Shared (in Visual Basic) variables that are declared and initialized in a single statement. В этом случае компилятор языка создает статический конструктор для типа.In this case, the language compiler generates a static constructor for the type. Рекомендуется проверить при помощи программы, такие как дизассемблер IL.You can inspect it by using a utility such as IL Disassembler. Например когда компиляторы C# и VB Скомпилируйте следующий пример, они создания IL для статический конструктор, который будет выглядеть: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  
    

    В следующем примере показан TypeInitializationException исключение, вызываемое компилятором статический конструктор.The following example shows a TypeInitializationException exception thrown by a compiler-generated static constructor. Example Класс включает static (в C#) или Shared (в Visual Basic) поле типа TestClass , создается путем передачи его конструктору класса значение 3.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. Тем не менее, это значение является недопустимым; допускаются только значения 0 или 1.That value, however, is illegal; only values of 0 or 1 are permitted. В результате TestClass класса конструктор выдаст ArgumentOutOfRangeException.As a result, the TestClass class constructor throws an ArgumentOutOfRangeException. Так как это исключение не обработано, оно помещается в TypeInitializationException исключение.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()
    

    Обратите внимание, что сообщение об исключении отображаются сведения о InnerException свойство.Note that the exception message displays information about the InnerException property.

  • Отсутствующий файл сборки или данныхA missing assembly or data file

    Распространенной причиной TypeInitializationException исключением является то, что файл сборки или данных, который присутствовал в средах разработки и тестирования приложения отсутствует его средой выполнения.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. Например можно скомпилировать в сборку с именем Missing1a.dll с помощью следующего синтаксиса командной строки следующим: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
    

    Можно скомпилировать в исполняемый файл с именем Missing1.exe, включая ссылку на Missing1a.dll следующим: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  
    

    Однако если переименовать, переместить, или удалить Missing1a.dll и запустить пример, он выдает TypeInitializationException исключения и отображает результат, показанный в примере.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. Обратите внимание, что сообщение об исключении включает сведения о InnerException свойство.Note that the exception message includes information about the InnerException property. В данном случае является во внутреннем исключении FileNotFoundException , возникает исключение, так как среда выполнения не удается найти зависимую сборку.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()
    

    Примечание

    В этом примере TypeInitializationException было создано исключение, поскольку не удалось загрузить сборку.In this example, a TypeInitializationException exception was thrown because an assembly could not be loaded. Если статический конструктор пытается открыть файл данных, такие как файл конфигурации, в XML-файл или файл, содержащий сериализованные данные, что его не удается найти, можно также вызывается исключение.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.

Значения времени ожидания совпадения регулярного выраженияRegular expression match timeout values

Можно задать значение времени ожидания по умолчанию для сравнения операции на основе на уровне домена приложения с шаблоном регулярного выражения.You can set the default timeout value for a regular expression pattern matching operation on a per-application domain basis. Время ожидания определяется путем указания TimeSpan значение для свойства «REGEX_DEFAULT_MATCH_TIMEOUT» AppDomain.SetData метод.The timeout is defined by a specifying a TimeSpan value for the "REGEX_DEFAULT_MATCH_TIMEOUT" property to the AppDomain.SetData method. Интервал времени должен быть допустимым TimeSpan объект, который больше нуля и меньше, чем приблизительно 24 дня.The time interval must be a valid TimeSpan object that is greater than zero and less than approximately 24 days. Если эти требования не выполнены, попытка установить значение времени ожидания по умолчанию создает ArgumentOutOfRangeException, который, в свою очередь, упаковывается в 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.

В следующем примере показан TypeInitializationException , создаваемое, когда значение присваивается свойству «REGEX_DEFAULT_MATCH_TIMEOUT» является недопустимым.The following example shows the TypeInitializationException that is thrown when the value assigned to the "REGEX_DEFAULT_MATCH_TIMEOUT" property is invalid. Чтобы устранить исключение, присвойте свойству «REGEX_DEFAULT_MATCH_TIMEOUT» TimeSpan значение, которое больше нуля и меньше, чем приблизительно 24 дня.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()

Календари и культуры данныхCalendars and cultural data

Если попытаться создать экземпляр календаря, но среда выполнения не удается создать экземпляр CultureInfo объект, соответствующий календарь, он выдает TypeInitializationException исключение.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. Это исключение может генерироваться следующие конструкторы класса календаря:This exception can be thrown by the following calendar class constructors:

Так как региональные данные для этих языков и региональных параметров, должны быть доступны во всех системах, возникает редко, если когда-нибудь, это исключение.Since cultural data for these cultures should be available on all systems, you should rarely, if ever, encounter this exception.

Конструкторы

TypeInitializationException(String, Exception) TypeInitializationException(String, Exception) TypeInitializationException(String, Exception) TypeInitializationException(String, Exception)

Инициализирует новый экземпляр класса TypeInitializationException используемым по умолчанию сообщением об ошибке, указанным именем типа и ссылкой на внутреннее исключение, которое является основной причиной возникновения данного исключения.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.

Свойства

Data Data Data Data

Возвращает коллекцию пар "ключ-значение", предоставляющих дополнительную заданную пользователем информацию об исключении.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Inherited from Exception)
HelpLink HelpLink HelpLink HelpLink

Возвращает или задает ссылку на файл справки, связанный с этим исключением.Gets or sets a link to the help file associated with this exception.

(Inherited from Exception)
HResult HResult HResult HResult

Возвращает или задает HRESULT — кодированное числовое значение, присвоенное определенному исключению.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Inherited from Exception)
InnerException InnerException InnerException InnerException

Возвращает экземпляр объекта Exception, который вызвал текущее исключение.Gets the Exception instance that caused the current exception.

(Inherited from Exception)
Message Message Message Message

Возвращает сообщение, описывающее текущее исключение.Gets a message that describes the current exception.

(Inherited from Exception)
Source Source Source Source

Возвращает или задает имя приложения или объекта, вызывавшего ошибку.Gets or sets the name of the application or the object that causes the error.

(Inherited from Exception)
StackTrace StackTrace StackTrace StackTrace

Получает строковое представление непосредственных кадров в стеке вызова.Gets a string representation of the immediate frames on the call stack.

(Inherited from Exception)
TargetSite TargetSite TargetSite TargetSite

Возвращает метод, создавший текущее исключение.Gets the method that throws the current exception.

(Inherited from Exception)
TypeName TypeName TypeName TypeName

Возвращает полное имя типа, который не удалось инициализировать.Gets the fully qualified name of the type that fails to initialize.

Методы

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

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

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

При переопределении в производном классе возвращает исключение Exception, которое является корневой причиной одного или нескольких последующих исключений.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()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

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

Задает имя типа и дополнительные сведения об исключении для объекта SerializationInfo.Sets the SerializationInfo object with the type name and additional exception information.

GetType() GetType() GetType() GetType()

Возвращает тип текущего экземпляра в среде выполнения.Gets the runtime type of the current instance.

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

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

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

Создает и возвращает строковое представление текущего исключения.Creates and returns a string representation of the current exception.

(Inherited from Exception)

События

SerializeObjectState SerializeObjectState SerializeObjectState SerializeObjectState

Возникает, когда исключение сериализовано для создания объекта состояния исключения, содержащего сериализованные данные об исключении.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Inherited from Exception)

Применяется к

Дополнительно