エクスポート (0) 印刷
すべて展開
この記事は機械翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。 詳細情報
訳文
原文

Exception クラス

アプリケーションの実行中に発生するエラーを表します。

System.Object
  System.Exception
    詳細...

名前空間:  System
アセンブリ:  mscorlib (mscorlib.dll 内)

[SerializableAttribute]
[ComVisibleAttribute(true)]
[ClassInterfaceAttribute(ClassInterfaceType.None)]
public class Exception : ISerializable, _Exception

Exception 型で公開されるメンバーは以下のとおりです。

  名前説明
パブリック メソッドXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETException() Exception クラスの新しいインスタンスを初期化します。
パブリック メソッドXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETException(String)指定したエラー メッセージを使用して、Exception クラスの新しいインスタンスを初期化します。
プロテクト メソッドException(SerializationInfo, StreamingContext)シリアル化したデータを使用して、Exception クラスの新しいインスタンスを初期化します。
パブリック メソッドXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETException(String, Exception)指定したエラー メッセージと、この例外の原因である内部例外への参照を使用して、Exception クラスの新しいインスタンスを初期化します。
このページのトップへ

  名前説明
パブリック プロパティ汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETData例外に関する追加のユーザー定義情報を提供するキー/値ペアのコレクションを取得します。
パブリック プロパティ汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETHelpLink例外に関連付けられているヘルプ ファイルへのリンクを取得または設定します。
パブリック プロパティXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETHResult特定の例外に割り当てられているコード化数値である HRESULT を取得または設定します。
パブリック プロパティXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETInnerException現在の例外の原因となる Exception インスタンスを取得します。
パブリック プロパティXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETMessage現在の例外を説明するメッセージを取得します。
パブリック プロパティ汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETSourceエラーの原因となったアプリケーションまたはオブジェクトの名前を取得または設定します。
パブリック プロパティXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETStackTrace呼び出し履歴の直前のフレームの文字列形式を取得します。
パブリック プロパティTargetSite現在の例外がスローされたメソッドを取得します。
このページのトップへ

  名前説明
パブリック メソッドXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETEquals(Object)指定のオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (Object から継承されます。)
プロテクト メソッドXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETFinalize オブジェクトがガベジ コレクションにより収集される前に、そのオブジェクトがリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。)
パブリック メソッドXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETGetBaseException派生クラスでオーバーライドされた場合、それ以後に発生する 1 つ以上の例外の主要な原因である Exception を返します。
パブリック メソッドXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETGetHashCode既定のハッシュ関数として機能します。 (Object から継承されます。)
パブリック メソッドGetObjectData派生クラスでオーバーライドされた場合は、その例外に関する情報を使用して SerializationInfo を設定します。
パブリック メソッドXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETGetType現在のインスタンスのランタイム型を取得します。

XNA Framework 3.0では、このメンバーは Object.GetType() から継承されています。


汎用性のあるクラス ライブラリ 汎用性のあるクラス ライブラリでは、このメンバーは Object.GetType() から継承されています。


Windows ストア アプリ用 .NET Windows 8では、このメンバーは Object.GetType() から継承されています。
プロテクト メソッドXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETMemberwiseClone現在の Object の簡易コピーを作成します。 (Object から継承されます。)
パブリック メソッドXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETToString現在の例外の文字列形式を作成して返します。 (Object.ToString() をオーバーライドします。)
このページのトップへ

  名前説明
プロテクト イベントSerializeObjectState例外がシリアル化され、例外に関するシリアル化されたデータを格納する例外状態オブジェクトが作成されたときに発生します。
このページのトップへ

このクラスは、すべての例外の基本クラスです。 エラーが発生するとシステムまたは現在実行中のアプリケーションには、エラーに関する情報を含む例外をスローすることを報告します。 例外がスローされた後、アプリケーションまたは既定の例外ハンドラーによって処理されます。

このセクションの内容:

エラーと例外
try ブロックと catch ブロック
例外の種類機能
例外クラス プロパティ
パフォーマンスに関する考慮事項
標準の例外の選択
カスタム例外の実装

エラーと例外

ランタイム エラーは、さまざまな理由で発生します。 ただし、コードの例外として、すべてのエラーが処理されることはありません。 実行時と適切な方法でそれらに応答して発生する可能性のあるエラーのあるカテゴリを次に示します。

  • 使用エラー使用エラーは例外を発生させるプログラム ロジックでエラーを表します。 ただし、エラーは、例外処理によって欠陥のあるコードの変更によって、対処する必要があります。 たとえば、次の例の Object.Equals(Object) のメソッドのオーバーライドは obj の引数が null 以外であることがあると仮定しています。

    
    using System;
    
    public class Person
    {
       private string _name;
    
       public string Name 
       {
          get { return _name; } 
          set { _name = value; }
       }
    
       public override int GetHashCode()
       {
          return this.Name.GetHashCode();  
       }  
    
       public override bool Equals(object obj)
       {
          // This implementation contains an error in program logic:
          // It assumes that the obj argument is not null.
          Person p = (Person) obj;
          return this.Name.Equals(p.Name);
       }
    }
    
    public class Example
    {
       public static void Main()
       {
          Person p1 = new Person();
          p1.Name = "John";
          Person p2 = null; 
    
          // The following throws a NullReferenceException.
          Console.WriteLine("p1 = p2: {0}", p1.Equals(p2));   
       }
    }
    
    
    

    objnull の場合の結果がソース・コードの変更によって明示的に Object.Equals のオーバーライドを呼び出し、再コンパイルすることを pre 空白を調べるには、削除できること NullReferenceException の例外。 次の例では null の引数を処理する修正したソース・コードが含まれています。

    
    using System;
    
    public class Person
    {
       private string _name;
    
       public string Name 
       {
          get { return _name; } 
          set { _name = value; }
       }
    
       public override int GetHashCode()
       {
          return this.Name.GetHashCode();  
       }  
    
       public override bool Equals(object obj)
       {
           // This implementation handles a null obj argument.
           Person p = obj as Person; 
           if (p == null) 
              return false;
           else
              return this.Name.Equals(p.Name);
       }
    }
    
    public class Example
    {
       public static void Main()
       {
          Person p1 = new Person();
          p1.Name = "John";
          Person p2 = null; 
    
          Console.WriteLine("p1 = p2: {0}", p1.Equals(p2));   
       }
    }
    // The example displays the following output:
    //        p1 = p2: False
    
    
    

    使用エラーのための例外処理を使用する代わりに、Debug.Assert のメソッドとデバッグ ビルドとリリース ビルドの両方のエラーを識別するためにデバッグ ビルドのエラーを識別するために Trace.Assert のメソッドを使用できます。 詳細については、「マネージ コードのアサーション」を参照してください。

  • プログラムのエラー.プログラム エラーはバグがないコードを記述することにより、回避できないランタイム エラーです。

    場合によっては、プログラム エラーは期待されるか、定期的なエラー状態に影響を与える可能性があります。 この場合、プログラム エラーを取扱い、代わりに操作を再試行するには、例外処理を使用することを回避したい場合があります。 たとえば、ユーザーが特定の形式で日付を入力と予測される解析操作では FormatException の例外をスローする DateTime.ParseExact のメソッドを使用する代わりに、成功したかどうか日付文字列が DateTime 値に変換できない場合は、表示 Boolean 値を返す DateTime.TryParseExact のメソッドを呼び出して日付文字列を解析できます。 同様に、ユーザーがないファイルを開こうとすると、ユーザーが、名前を作成するかどうかをユーザーに求めるにファイルがあるかどうかを確認 File.Exists メソッドの最初の呼び出しできます。

    また、プログラム エラーはコードで処理することができる予期しないエラー状態を反映します。 ファイルがあることを、確実にチェックしても、そのファイルを開くことができ、が破損する場合があります。前に削除されることがあります。 この場合、StreamReader オブジェクトをインスタンス化するか、Open のメソッドを呼び出してファイルを開こうとすると、FileNotFoundException の例外をスローすることがあります。 この場合、エラーから回復に、例外処理を使用する必要があります。

  • システム障害システム障害がわかりやすい方法でプログラムによって処理するできないランタイム エラーです。 たとえば、共通言語ランタイムが追加のメモリを割り当てる場合は、どのメソッドが OutOfMemoryException の例外をスローすることができます。 通常、システム障害は例外処理を使用して処理されません。 代わりに、アプリケーションが終了する前に、AppDomain.UnhandledException などのイベントを使用して、例外情報を記録し、エラーをユーザーに通知するために Environment.FailFast のメソッドをを呼び出す可能性があります。

try ブロックと catch ブロック

共通言語ランタイムは try ブロックと catch ブロック内のオブジェクトとして例外表現に基づく、プログラム コードと例外処理コードを分離する例外処理モデル。 catch ブロックは 1 つ以上あり、それぞれのブロックは、特定の型の例外を処理するように設計されていることも、一方のブロックが他方のブロックよりも具体的な例外を受け取るように設計されていることもあります。

アプリケーションがアプリケーション コード ブロックの実行中に発生する例外を処理すれば、コードは try のステートメント内に配置する必要があります try、ブロックと呼ばれます。 try ブロックによってスローされた例外を処理するアプリケーション コードは catch のステートメント内に配置され、catch ブロックと呼ばれます。 0 個以上の catch ブロックが try ブロックに関連付けられ、それぞれの catch ブロックには、そのブロックが処理する例外の種類を判断する型フィルターが含まれています。

try ブロックで例外が発生すると、その例外を処理する catch ブロックが見つかるまで、関連付けられている catch ブロックが、アプリケーション コード内での出現順に検索されます。 catch ブロックの型フィルターが T または T の派生元の型を指定している場合、その catch ブロックは T 型の例外を処理します。 例外を処理する最初の catch ブロックが見つかると、システムは検索を中断します。 そのため、アプリケーション コードでは、このセクション以降の例で示されるように、ある種類を処理する catch ブロックは、その基本となる種類を処理する catch ブロックよりも前に指定される必要があります。 System.Exception を処理する catch ブロックは最後に指定されます。

現在の try ブロックに関連付けられた catch ブロックでは例外を処理するブロックが見つからず、現在の呼び出しにおいて現在の try ブロックが他の try ブロックの入れ子になっている場合は、その外側の try ブロックに関連付けられた catch ブロックが検索されます。 例外を処理する catch ブロックが見つからない場合は、現在の呼び出しにおける入れ子レベルの外側をさかのぼって検索が行われます。 現在の呼び出しの中で例外を処理する catch ブロックが見つからない場合、その例外はコール スタックに渡され、上位レベルのスタック フレームで、その例外を処理する catch ブロックが検索されます。 コール スタックの検索は、その例外が処理されるか、そのコール スタックにフレームがなくなるまで続けられます。 例外を処理する catch ブロックが見つからずにコール スタックの最上位レベルに達した場合は、既定の例外ハンドラーがその例外を処理し、アプリケーションが終了します。

例外の種類機能

例外の種類は、次の機能をサポートしています。

  • ユーザーが判読できる、エラーを説明したテキスト。 例外が発生すると、ランタイムは、エラーの種類をし、問題を解決する操作を提案するテキスト メッセージを使用できるようになります。 このテキスト メッセージは、例外オブジェクトの Message プロパティに保持されます。 例外オブジェクトの作成時に、その特定の例外の詳細を説明するテキスト文字列をコンストラクターに渡すことができます。 コンストラクターに渡すエラー メッセージの引数を指定しない場合は、既定のエラー メッセージが使用されます。 詳細については、Message プロパティを参照してください。

  • 例外がスローされたときのコール スタックの状態。 StackTrace のプロパティは、コードのどこでエラーが発生したかを確認するために使用できるスタック トレースを行います。 スタック トレースは、呼び出し元のソース ファイルのすべての呼び出されたメソッドと行番号が表示されます。

例外クラス プロパティ

Exception クラスは、例外の場合、コードの場所、型、ヘルプ ファイルとその原因を特定し、いくつかのプロパティが含まれています: StackTraceInnerExceptionMessageHelpLinkHResultSourceTargetSiteData

2 つ以上の例外の間に因果関係があると、InnerException プロパティにはこの情報が保持されます。 外部例外は、この内部例外に応答してスローされます。 外部例外を処理するコードは、先に発生した内部例外からの情報を使用して、より的確にエラーを処理できます。 例外についての補足情報は Data のプロパティのキーと値のペアのコレクションとして保存できます。

例外オブジェクトの作成時にコンストラクターに渡されたエラー メッセージ文字列がローカライズされる場合には、リソース ファイルから ResourceManager クラスを使用して指定できます。 ローカライズされたリソースの詳細については、デスクトップ アプリケーションに対するサテライト アセンブリの作成デスクトップ アプリケーションでのリソースのパッケージ化と配置 "を参照します。

指定するには、例外の原因に関する発生したかを示す詳細情報をユーザーに、HelpLink のプロパティには、ヘルプ ファイルの URL (または URN) を保持します。

Exception クラスは 0x80131500 値を持つ HRESULT COR_E_EXCEPTION を使用します。

Exception クラスのインスタンスの初期プロパティ値の一覧については、Exception コンストラクターのトピックを参照してください。

パフォーマンスに関する考慮事項

例外をスローするか、処理すると、多くのシステム リソース、およびランタイムを使用します。 予測可能なイベントやフロー制御の処理のためではなく、真に異常な状態の場合のみ例外をスローしてください。 たとえばメソッドが有効なパラメーターというとなるため、メソッド引数が無効なクラス ライブラリを開発しているときに、など、例外をスローすることは適切です。 これは使用エラーの結果である、無効なメソッド引数はありません。異常な出来事が発生したことを示します。 逆に、ユーザーがときどき無効なデータを入力することが予想されるため、ユーザー入力が有効でない場合は、例外をスローしないでします。 代わりに、再試行の機能を提供し、ユーザーが有効な入力を入力できます。 使用エラーを処理するために例外を使用する必要があります。 代わりに、識別子に使用 アサーション と正しい使用エラー。

さらにリターン コードでは不十分な場合は、例外をスローしないで;。例外にリターン コードを変換しないでください; および定期的に例外をキャッチし、無視するし、処理を継続しないしないでください。

標準の例外の選択

例外をスローしなければならないときに .NET Framework でカスタム例外を実装する代わりに、既存の例外の型を使用できます。 この二つの状況で標準の例外の種類を使用する必要があります:

  • 使用エラーが原因で例外をスローしています (つまり、メソッドを呼び出している)、プログラム ロジックのエラーによって開発者が。 通常、ArgumentExceptionArgumentNullExceptionInvalidOperationException、または NotSupportedExceptionなどの例外をスローします。 開発者がバグを修正できるように例外オブジェクトをインスタンス化することでエラーを記述する必要があるときに、例外オブジェクトのコンストラクターに渡す文字列。 詳細については、Message プロパティを参照してください。

  • 既存の .NET Framework の例外に呼び出し元と通信できるエラーを処理しています。 最も派生しました可能な例外をスローする必要があります。 たとえば、メソッドは、引数が列挙型の有効なメンバーである必要がある場合 ArgumentExceptionではなく InvalidEnumArgumentException (最派生クラス) をスローする必要があります。

カスタム例外の実装

次の場合、既存の .NET Framework の例外を使用してエラー条件を処理するだけでは十分でない:

  • 例外が既存の .NET Framework の例外にマップできない一意なプログラム エラーが反映されます。

  • 例外が既存の .NET Framework の例外、または例外に適した処理とは異なる処理が必要な場合に同様の例外とを区別する必要があります。 ターゲット整数型の範囲外である文字列の数値表記を解析する場合など、ArgumentOutOfRangeException 例外をスローすれば、メソッドを呼び出すと、適切な抑制された値を指定していない呼び出し元からの結果そのエラーに同じ例外を使用しません。

Exception クラスは .NET Framework のすべての例外の基本クラスです。 多くの派生クラスは Exception クラスの継承されたメンバーの動作に依存; これらは Exceptionのメンバーをオーバーライドして、独自のメンバーを定義します。

独自の例外クラスを定義するには:

  1. Exception から継承するクラスを定義します。 必要に応じて、例外に関する追加情報を提供するために、クラスに必要な一意のメンバーを定義します。 たとえば、ArgumentException クラスは、引数が例外を発生させた、RegexMatchTimeoutException のプロパティはタイムアウト間隔を示す MatchTimeout のプロパティを含むパラメーターの名前を指定する ParamName のプロパティが含まれます。

  2. 必要に応じて、機能を変更し、変更する場合は、継承したメンバーをオーバーライドします。 Exception のほとんどの既存の派生クラスが継承されたメンバーの動作をオーバーライドすることに注意してください。

  3. カスタム例外オブジェクトをシリアル化できるかどうかを確認します。 シリアル化は、例外に関する情報を保存できます。また、例外情報をリモート処理のコンテキストのサーバーおよびクライアント プロキシで共有できるようになります。 例外オブジェクトをシリアル化するには、SerializableAttribute 属性でマークします。

  4. 例外クラスのコンストラクターを定義します。 通常、例外クラスに次のコンストラクターの一つ以上があります:

    • Exception() 、新しい例外オブジェクトのプロパティを初期化するために既定値を使用できます。

    • Exception(String) 、指定されたエラー メッセージを含む新しい例外オブジェクトを初期化する。

    • Exception(String, Exception) 、指定されたエラー メッセージと内部例外を含む新しい例外オブジェクトを初期化する。

    • Exception(SerializationInfo, StreamingContext) 、シリアル化されたデータから新しい例外オブジェクトを初期化する protected のコンストラクターです。 例外オブジェクトをシリアル化可能にする場合は、このコンストラクターを実装する必要があります。

次の例では、カスタム例外クラスの使用方法を示しています。 したがって、クライアントが素数でない最初の番号を指定して素数のシーケンスを取得するときにスローされる NotPrimeException の例外を定義します。 この例外は、例外の原因となった非素数の数を返す新しいプロパティ、NonPrimeを定義します。 SerializationInfo の保護されたなパラメーターなしのコンストラクターとコンストラクターとシリアル化の StreamingContext パラメーターの実装に加えて、NotPrimeException クラスは NonPrime のプロパティをサポートするために 3 個の追加コンストラクターを定義します。コンストラクターは、基本クラスのコンストラクター非素数の数の値を保持するだけでなく、各。 NotPrimeException クラスは、SerializableAttribute 属性でマークされます。


using System;
using System.Runtime.Serialization;

[Serializable()]
public class NotPrimeException : Exception
{
   private int notAPrime;

   protected NotPrimeException()
      : base()
   { }

   public NotPrimeException(int value) :
      base(String.Format("{0} is not a prime number.", value))
   {
      notAPrime = value;
   }

   public NotPrimeException(int value, string message)
      : base(message)
   {
      notAPrime = value;
   }

   public NotPrimeException(int value, string message, Exception innerException) :
      base(message, innerException)
   {
      notAPrime = value;
   }

   protected NotPrimeException(SerializationInfo info,
                               StreamingContext context)
      : base(info, context)
   { }

   public int NonPrime
   { get { return notAPrime; } }
}


次の例に示す PrimeNumberGenerator クラスは、呼び出しで 2 のクライアントが指定するクラス コンストラクターの制限に素数のシーケンスを計算するためにエラトステネスの篩を使用します。 GetPrimesFrom メソッドは、すべて指定下限に以上素数、下限が素数である NotPrimeException をスローします。


using System;
using System.Collections.Generic;


[Serializable]
public class PrimeNumberGenerator
{
   private const int START = 2;
   private int maxUpperBound = 10000000;
   private int upperBound;
   private bool[] primeTable;
   private List<int> primes = new List<int>();

   public PrimeNumberGenerator(int upperBound)
   {
      if (upperBound > maxUpperBound)
      {
         string message = String.Format(
                           "{0} exceeds the maximum upper bound of {1}.",
                           upperBound, maxUpperBound);
         throw new ArgumentOutOfRangeException(message);
      }
      this.upperBound = upperBound;
      // Create array and mark 0, 1 as not prime (True).
      primeTable = new bool[upperBound + 1];
      primeTable[0] = true;
      primeTable[1] = true;

      // Use Sieve of Eratosthenes to determine prime numbers.
      for (int ctr = START; ctr <= (int)Math.Ceiling(Math.Sqrt(upperBound));
            ctr++)
      {
         if (primeTable[ctr]) continue;

         for (int multiplier = ctr; multiplier <= upperBound / ctr; multiplier++)
            if (ctr * multiplier <= upperBound) primeTable[ctr * multiplier] = true;
      }
      // Populate array with prime number information.
      int index = START;
      while (index != -1)
      {
         index = Array.FindIndex(primeTable, index, (flag) => !flag);
         if (index >= 1)
         {
            primes.Add(index);
            index++;
         }
      }
   }

   public int[] GetAllPrimes()
   {
      return primes.ToArray();
   }

   public int[] GetPrimesFrom(int prime)
   {
      int start = primes.FindIndex((value) => value == prime);
      if (start < 0)
         throw new NotPrimeException(prime, String.Format("{0} is not a prime number.", prime));
      else
         return primes.FindAll((value) => value >= prime).ToArray();
   }
}


次の例は、非素数の数の GetPrimesFrom のメソッド、そのうちの一つは 2 回の呼び出しを通過するアプリケーション ドメインの境界が作成されます。 いずれの場合も、例外は、クライアント コードでスローされ、正常に処理されます。


using System;
using System.Reflection;

class Example
{
   public static void Main()
   {
      int limit = 10000000;
      PrimeNumberGenerator primes = new PrimeNumberGenerator(limit);
      int start = 1000001;
      try
      {
         int[] values = primes.GetPrimesFrom(start);
         Console.WriteLine("There are {0} prime numbers from {1} to {2}",
                           start, limit);
      }
      catch (NotPrimeException e)
      {
         Console.WriteLine("{0} is not prime", e.NonPrime);
         Console.WriteLine(e);
         Console.WriteLine("--------");
      }

      AppDomain domain = AppDomain.CreateDomain("Domain2");
      PrimeNumberGenerator gen = (PrimeNumberGenerator)domain.CreateInstanceAndUnwrap(
                                        typeof(Example).Assembly.FullName,
                                        "PrimeNumberGenerator", true,
                                        BindingFlags.Default, null,
                                        new object[] { 1000000 }, null, null);
      try
      {
         start = 100;
         Console.WriteLine(gen.GetPrimesFrom(start));
      }
      catch (NotPrimeException e)
      {
         Console.WriteLine("{0} is not prime", e.NonPrime);
         Console.WriteLine(e);
         Console.WriteLine("--------");
      }
   }
}


Windows ランタイムと .NET Framework 4.5.1

Windows 8の Windows ストア アプリ用 .NET で、例外情報は通常、例外が非.NET Framework スタック フレームにまで反映されると失われます。 .NET Framework 4.5.1 と Windows 8.1以降では、共通言語ランタイムはその例外が非.NET Framework スタック フレームで変更されてスローされた Exception 元のオブジェクトを使用します。

次の例では ArithmeticException のエラーを処理するために定義されている catch ブロックを示しています。 catch のこのブロックは、DivideByZeroExceptionArithmeticException から派生し、明示的に DivideByZeroException のエラーに対して定義されている catch ブロックがないため、DivideByZeroException のエラーを検出します。


using System;

class ExceptionTestClass 
{
   public static void Main() 
   {
      int x = 0;
      try 
      {
         int y = 100/x;
      }
         catch (ArithmeticException e) 
         {
            Console.WriteLine("ArithmeticException Handler: {0}", e.ToString());
         }
         catch (Exception e) 
         {
            Console.WriteLine("Generic Exception Handler: {0}", e.ToString());
         }
   }	
}
/*
This code example produces the following results:

ArithmeticException Handler: System.DivideByZeroException: Attempted to divide by zero.
   at ExceptionTestClass.Main()

*/


.NET Framework

サポート対象 : 4.5.2、4.5.1、4.5、4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

サポート対象 : 4、3.5 SP1

汎用性のあるクラス ライブラリ

サポート対象 : 汎用性のあるクラス ライブラリ

Windows ストア アプリ用 .NET

サポート対象 : Windows 8

Windows Phone アプリ用 .NET

サポート対象 : Windows Phone 8、Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (サーバー コア ロールはサポート対象外), Windows Server 2008 R2 (SP1 以降でサーバー コア ロールをサポート。Itanium はサポート対象外)

.NET Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

この型のすべてのパブリック static (Visual Basic では Shared) メンバーは、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

System.Object
  System.Exception
    Microsoft.Build.BuildEngine.InternalLoggerException
    Microsoft.Build.BuildEngine.InvalidProjectFileException
    Microsoft.Build.BuildEngine.InvalidToolsetDefinitionException
    Microsoft.Build.BuildEngine.RemoteErrorException
    Microsoft.Build.Exceptions.BuildAbortedException
    Microsoft.Build.Exceptions.InternalLoggerException
    Microsoft.Build.Exceptions.InvalidProjectFileException
    Microsoft.Build.Exceptions.InvalidToolsetDefinitionException
    Microsoft.Build.Framework.LoggerException
    Microsoft.CSharp.RuntimeBinder.RuntimeBinderException
    Microsoft.CSharp.RuntimeBinder.RuntimeBinderInternalCompilerException
    Microsoft.JScript.CmdLineException
    Microsoft.JScript.ParserException
    Microsoft.VisualBasic.ApplicationServices.CantStartSingleInstanceException
    Microsoft.VisualBasic.ApplicationServices.NoStartupFormException
    Microsoft.VisualBasic.Compatibility.VB6.WebClassContainingClassNotOptional
    Microsoft.VisualBasic.Compatibility.VB6.WebClassCouldNotFindEvent
    Microsoft.VisualBasic.Compatibility.VB6.WebClassNextItemCannotBeCurrentWebItem
    Microsoft.VisualBasic.Compatibility.VB6.WebClassNextItemRespondNotFound
    Microsoft.VisualBasic.Compatibility.VB6.WebClassUserWebClassNameNotOptional
    Microsoft.VisualBasic.Compatibility.VB6.WebClassWebClassFileNameNotOptional
    Microsoft.VisualBasic.Compatibility.VB6.WebClassWebItemNotValid
    Microsoft.VisualBasic.Compatibility.VB6.WebItemAssociatedWebClassNotOptional
    Microsoft.VisualBasic.Compatibility.VB6.WebItemClosingTagNotFound
    Microsoft.VisualBasic.Compatibility.VB6.WebItemCouldNotLoadEmbeddedResource
    Microsoft.VisualBasic.Compatibility.VB6.WebItemCouldNotLoadTemplateFile
    Microsoft.VisualBasic.Compatibility.VB6.WebItemNameNotOptional
    Microsoft.VisualBasic.Compatibility.VB6.WebItemNoTemplateSpecified
    Microsoft.VisualBasic.Compatibility.VB6.WebItemTooManyNestedTags
    Microsoft.VisualBasic.Compatibility.VB6.WebItemUnexpectedErrorReadingTemplateFile
    Microsoft.VisualBasic.CompilerServices.IncompleteInitialization
    Microsoft.VisualBasic.CompilerServices.InternalErrorException
    Microsoft.VisualBasic.FileIO.MalformedLineException
    System.Activities.DynamicUpdate.InstanceUpdateException
    System.Activities.ExpressionParser.SourceExpressionException
    System.Activities.Expressions.LambdaSerializationException
    System.Activities.InvalidWorkflowException
    System.Activities.Presentation.Metadata.AttributeTableValidationException
    System.Activities.Statements.WorkflowTerminatedException
    System.Activities.VersionMismatchException
    System.Activities.WorkflowApplicationException
    System.AddIn.Hosting.AddInSegmentDirectoryNotFoundException
    System.AddIn.Hosting.InvalidPipelineStoreException
    System.AggregateException
    System.ApplicationException
    System.ComponentModel.Composition.CompositionContractMismatchException
    System.ComponentModel.Composition.CompositionException
    System.ComponentModel.Composition.ImportCardinalityMismatchException
    System.ComponentModel.Composition.Primitives.ComposablePartException
    System.ComponentModel.DataAnnotations.ValidationException
    System.ComponentModel.Design.ExceptionCollection
    System.Configuration.Provider.ProviderException
    System.Configuration.SettingsPropertyIsReadOnlyException
    System.Configuration.SettingsPropertyNotFoundException
    System.Configuration.SettingsPropertyWrongTypeException
    System.Data.Linq.ChangeConflictException
    System.Diagnostics.Eventing.Reader.EventLogException
    System.Diagnostics.Tracing.EventSourceException
    System.DirectoryServices.ActiveDirectory.ActiveDirectoryObjectExistsException
    System.DirectoryServices.ActiveDirectory.ActiveDirectoryObjectNotFoundException
    System.DirectoryServices.ActiveDirectory.ActiveDirectoryOperationException
    System.DirectoryServices.ActiveDirectory.ActiveDirectoryServerDownException
    System.DirectoryServices.Protocols.DirectoryException
    System.IdentityModel.AsynchronousOperationException
    System.IdentityModel.Metadata.MetadataSerializationException
    System.IdentityModel.Protocols.WSTrust.WSTrustSerializationException
    System.IdentityModel.RequestException
    System.IdentityModel.Selectors.CardSpaceException
    System.IdentityModel.Selectors.IdentityValidationException
    System.IdentityModel.Selectors.PolicyValidationException
    System.IdentityModel.Selectors.ServiceBusyException
    System.IdentityModel.Selectors.ServiceNotStartedException
    System.IdentityModel.Selectors.StsCommunicationException
    System.IdentityModel.Selectors.UnsupportedPolicyOptionsException
    System.IdentityModel.Selectors.UntrustedRecipientException
    System.IdentityModel.Selectors.UserCancellationException
    System.IdentityModel.Services.AsynchronousOperationException
    System.IdentityModel.Services.FederatedAuthenticationSessionEndingException
    System.IdentityModel.Services.FederationException
    System.IdentityModel.Services.WSFederationMessageException
    System.InvalidTimeZoneException
    System.IO.IsolatedStorage.IsolatedStorageException
    System.IO.Log.SequenceFullException
    System.Management.Instrumentation.InstrumentationBaseException
    System.Management.Instrumentation.WmiProviderInstallationException
    System.Net.Http.HttpRequestException
    System.Net.Mail.SmtpException
    System.Net.PeerToPeer.PeerToPeerException
    System.Runtime.CompilerServices.RuntimeWrappedException
    System.Runtime.DurableInstancing.InstancePersistenceException
    System.Runtime.Remoting.MetadataServices.SUDSGeneratorException
    System.Runtime.Remoting.MetadataServices.SUDSParserException
    System.Runtime.Serialization.InvalidDataContractException
    System.Security.RightsManagement.RightsManagementException
    System.ServiceModel.Channels.InvalidChannelBindingException
    System.SystemException
    System.Threading.BarrierPostPhaseException
    System.Threading.LockRecursionException
    System.Threading.Tasks.TaskSchedulerException
    System.TimeZoneNotFoundException
    System.Web.Query.Dynamic.ParseException
    System.Web.Security.MembershipCreateUserException
    System.Web.Security.MembershipPasswordException
    System.Web.UI.ViewStateException
    System.Web.UI.WebControls.EntityDataSourceValidationException
    System.Web.UI.WebControls.LinqDataSourceValidationException
    System.Windows.Automation.NoClickablePointException
    System.Windows.Automation.ProxyAssemblyNotLoadedException
    System.Windows.Controls.PrintDialogException
    System.Windows.Forms.AxHost.InvalidActiveXStateException
    System.Windows.Xps.XpsException
    System.Windows.Xps.XpsWriterException
    System.Workflow.Activities.Rules.RuleException
    System.Workflow.ComponentModel.Compiler.WorkflowValidationFailedException
    System.Workflow.ComponentModel.Serialization.WorkflowMarkupSerializationException
    System.Workflow.ComponentModel.WorkflowTerminatedException
    System.Workflow.Runtime.WorkflowOwnershipException
    System.Xaml.XamlException

コミュニティの追加

追加
表示:
© 2014 Microsoft