組み込みの例外サブクラス
標準パッケージJava.langで、Javaはいくつかの例外クラスを定義しています。これらのいくつかは、前の例で使用されていました。これらの例外は、通常、標準クラスのruntimeexceptionのサブクラスです。 Java.langは実際にはすべてのJavaプログラムによって導入されているため、RuntimeExceptionから派生したほとんどの例外は自動的に利用可能です。また、どの方法のスローリストに含める必要はありません。 Javaでは、これは未チェックの例外と呼ばれます。コンパイラは、メソッドがこれらの例外を処理またはスローするかどうかを確認するためにそれをチェックしないためです。 java.langで定義されている未チェックの例外を表1に示します。表2には、java.langによって定義されたメソッドのスローリストに含める必要がある例外を示します。これらのメソッドが例外のいずれかを生成できますが、それ自体で処理できない場合。これらは、チェックされた例外と呼ばれます。 Javaは、異なるライブラリクラスに関連する他のいくつかの例外タイプを定義します。
表1:javaのjava.langで定義されている未チェックの例外サブクラス
表2:java.langで定義されている例外を確認します
Javaを使用して独自の例外サブクラスを作成します
Javaの組み込みの例外ハンドリングの最も一般的なエラーは、適用している特別なケースを処理するために独自の例外タイプを構築することをお勧めします。これは非常に簡単です。例外のサブクラスを定義するだけです(もちろん、例外はスロー可能なサブクラスです)。サブクラスは実際に何もする必要はありません。タイプシステムでの存在により、例外として使用できます。
例外クラス自体は、方法を定義しません。もちろん、Throwableが提供する方法のいくつかを継承します。したがって、作成したものを含むすべての例外は、スロー可能な定義済みの方法を取得できます。これらの方法を表3に示します。また、作成した例外クラスでこれらのメソッドの1つ以上をオーバーライドすることもできます。
表3スロー可能で定義された方法
次の例では、例外の新しいサブクラスを宣言し、メソッドのエラーの信号として使用されます。 ToString()メソッドを過負荷するため、例外の説明をprintln()で表示できます。
//このプログラムは、Class MyExceptionを作成します。 } class exceptiondemo {static void compute(int a)system.out.println( "compute(" + a + ")); .println( "Normal Exit"); e);
この例では、例外MyExceptionのサブクラスを定義しています。このサブクラスは非常にシンプルです。コンストラクターと、外れ値を表示する過負荷のtoString()メソッドのみが含まれています。 ExceptionDemoクラスは、compute()メソッドを定義します。この方法は、MyExceptionオブジェクトをスローします。この例外は、compute()の整数パラメーターが10を超えると発生します。
Main()メソッドは、MyExceptionの例外ハンドラーを設定し、法的価値と違法価値でCompute()を呼び出して、コードを介して異なる実行パスを表示します。結果は次のとおりです。
Compute(1)通常の出口コンピューティング(20)キャッチされたmyexception [20]と呼ばれる