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)]
[Serializable]
public sealed class TypeInitializationException : SystemException
type TypeInitializationException = class
    inherit SystemException
Public NotInheritable Class TypeInitializationException
Inherits SystemException
継承
TypeInitializationExceptionTypeInitializationExceptionTypeInitializationExceptionTypeInitializationException
属性
ComVisibleAttribute SerializableAttribute

注釈

クラス初期化子で型の初期化に失敗すると、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 値は 0x80131534 HRESULT COR_E_TYPEINITIALIZATION を使用します。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

静的コンス トラクターでは、1 つが存在する場合は自動的にランタイムによって呼び出されます、型の新しいインスタンスを作成する前にします。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. 静的コンス トラクターが明示的に定義されていない場合のコンパイラを自動的に作成、初期化するために 1 つ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) で宣言され、1 つのステートメントで初期化される変数。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
    

    Missing1a.dll への参照を含めることによって Missing1.exe を名前付き実行可能ファイルに次の例をコンパイルできます。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が 0 未満に約 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値が 0 とより小さい約 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()

派生クラスでオーバーライドされた場合、それ以後に発生する 1 つ以上の例外の主要な原因である 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)

適用対象

こちらもご覧ください