Exception クラスとは? わかりやすく解説

Exception クラス

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

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

<SerializableAttribute> _
<ComVisibleAttribute(True)> _
<ClassInterfaceAttribute(ClassInterfaceType.None)> _
Public Class Exception
    Implements ISerializable, _Exception
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
[ClassInterfaceAttribute(ClassInterfaceType.None)] 
public class Exception : ISerializable, _Exception
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
[ClassInterfaceAttribute(ClassInterfaceType::None)] 
public ref class Exception : ISerializable,
 _Exception
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.None) */ 
public class Exception implements ISerializable,
 _Exception
SerializableAttribute 
ComVisibleAttribute(true) 
ClassInterfaceAttribute(ClassInterfaceType.None) 
public class Exception implements ISerializable,
 _Exception
解説解説

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

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

アプリケーションが、あるブロックアプリケーション コード実行中発生する例外処理する場合は、そのコードtry ステートメント内部入れる必要があります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 ブロックが見つからずコール スタック最上位レベル達した場合は、既定例外ハンドラがその例外処理しアプリケーション終了します

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

Exception 基本クラスには例外2 つカテゴリあります

Exception には、例外コード位置種類ヘルプ ファイル、および理由識別するのに役立つ多くプロパティ含まれています。それらのプロパティには、StackTrace、InnerException、Message、HelpLink、HResult、Source、TargetSite、および Dataあります

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

例外オブジェクトの作成中にコンストラクタ渡されエラー メッセージ文字列ローカライズされているため、ResourceManager を使用してリソース ファイルから指定できますローカライズされたリソース詳細については、System.Resources 名前空間概要トピックおよび「リソースパッケージ化配置」を参照してください

例外発生理由に関する詳細情報ユーザー提供するために、HelpLink プロパティヘルプ ファイルURL (または URN) を保持させることができます

Exception は、値 0x80131500 を保持する HRESULT COR_E_EXCEPTION を使用します

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

パフォーマンスに関する注意事項

例外スローしたり処理したりするときには大量システム リソースおよび実行時間使われます。予測可能なイベントフロー制御の処理のためではなく真に異常な状態の場合のみ例外スローしてください。たとえば、アプリケーションでは有効なパラメータメソッド呼び出されることを前提としているので、メソッド引数無効な場合適切な理由例外スローできますメソッド引数無効であるということは、何か異常が発生していることを示してます。これに対してユーザー入力無効である場合例外スローしないでくださいユーザー無効なデータ入力する場合があることは予測可能な事態だからです。このような場合は、ユーザー有効な入力実行する機会与え再試行メカニズム提供します

異常な状況に対して例外スローする場合は、特定の例外適用されるハンドラではなくアプリケーション大半適用される汎用目的例外ハンドラ例外キャッチします。この手法は、エラー大半発生位置周辺検証エラー処理コード使って対応できるものであり、例外スローまたはキャッチ不要であるという考え方基づいてます。汎用目的例外ハンドラキャッチする対象は、アプリケーション任意の場所でスローされ、適切に予測できない例外です。

また、リターン コードが十分である場合例外スローしたり、リターン コード例外変換したりしないください例外キャッチした場合に、それを無視して処理を続行することは避けてください

使用例使用例

ArithmeticException エラー処理するように定義されている catch ブロックを示すコード例は、次のとおりです。DivideByZeroExceptionArithmeticException から派生しDivideByZeroException エラーに対して明示的に定義されcatch ブロックがないため、この catch ブロックは DivideByZeroException エラー受け取ります

Imports System

Class ExceptionTestClass
   
   Public Shared Sub Main()
      Dim x As Integer =
 0
      Try
         Dim y As Integer
 = 100 / x
      Catch e As ArithmeticException
         Console.WriteLine("ArithmeticException Handler: {0}",
 e.ToString())
      Catch e As Exception
         Console.WriteLine("Generic Exception Handler: {0}",
 e.ToString())
      End Try
   End Sub 'Main
End Class 'ExceptionTestClass
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());
            }
      }    
}
using namespace System;
int main()
{
   int x = 0;
   try
   {
      int y = 100 / x;
   }
   catch ( ArithmeticException^ e ) 
   {
      Console::WriteLine( "ArithmeticException Handler: {0}", e );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Generic Exception Handler: {0}", e );
   }

}

import System.*;

class ExceptionTestClass
{
    public static void main(String[]
 args)
    {
        int x = 0;
        try {
            int y = 100 / x;
        }
        catch (ArithmeticException e) {
            Console.WriteLine("ArithmeticException Handler: {0}", e.ToString());
        }
        catch (System.Exception e) {
            Console.WriteLine("Generic Exception Handler: {0}", e.ToString());
        }
    } //main
} //ExceptionTestClass

C# コード次の出力生成します

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

Visual Basic コード次の出力生成します

ArithmeticException Handler: System.OverflowException: Exception of type System.OverflowException
 was thrown. at ExceptionTestClass.Main()
継承階層継承階層
System.Object
  System.Exception
     派生クラス
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Exception クラス」の関連用語

Exception クラスのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Exception クラスのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS