Javaスロー:例外スロー
プログラムは、スローステートメントを使用して、明確な例外をスローできます。スローステートメントの通常の形式は次のとおりです。
スローアブルインスタンスをスローします。
ここでは、ThrowableInstanceは、スロー可能なクラスタイプまたはスロー可能なサブクラスタイプのオブジェクトでなければなりません。 INTやCHARなどの単純なタイプ、およびストリングやオブジェクトなどのスロー不可能なクラスは、例外として使用できません。スロー可能なオブジェクトを取得するには2つの方法があります。Catch句でパラメーターを使用するか、新しいオペレーターでそれらを作成します。
プログラムの実行は、スローステートメントの直後に停止します。最も密接に密接になったトライブロックは、例外タイプに一致するキャッチステートメントが含まれているかどうかを確認するために使用されます。一致するブロックが見つかった場合、コントロールはステートメントに変わります。一致するキャッチブロックが見つからない場合、デフォルトの例外ハンドラーはプログラムの実行を中断し、スタックトレースを印刷します。
以下は、例外に一致するハンドラーを作成してスローする例です。
// Thros.Class Throwdemo {Static void demoproc(){try {throw nullpointerexception( "demo"); / /例外}} public static void main(string args []){demoproc();このプログラムには、同じエラーを処理する2つの機会があります。最初に、Main()は例外関係を設定し、次にDemoProc()を呼び出します。 DemoProc()メソッドは、別の例外関係関係を設定し、すぐに新しいNullPointerExceptionインスタンスをスローします。これは次の行でキャプチャされます。その後、例外が再度スローされます。出力の結果は次のとおりです。
Demoproc.Recaught内でキャッチ:java.lang.nullpointerexception:demo
プログラムはまた、Javaで標準の例外オブジェクトを作成する方法についても説明し、次の行に特に注意を払います。
新しいnullpointerexception( "demo");
ここでは、nullpointerexceptionインスタンスの構築に使用されます。すべてのJavaビルトインランタイムの例外には、2つのコンストラクターがあります。1つはパラメーターがなく、1つは文字列パラメーターがあります。 2番目のフォームを使用すると、パラメーターは例外を説明する文字列を指定します。オブジェクトがprint()またはprintln()のパラメーターとして使用されている場合、文字列が表示されます。これは、getMessage()を呼び出すことで達成することもできます。これは、Throwableで定義されます。
Javaは句をスローします<br />メソッドが例外を引き起こすが、それを処理できない場合、メソッドの発信者が例外なく自分自身を保護できるように、この動作を指定する必要があります。これを行うには、メソッド宣言にスロー条項を含めることができます。 Throws句は、メソッドがスローする可能性のあるすべての例外タイプをリストします。これは、エラーまたはruntimeExceptionとそのサブクラスを除くすべてのタイプを除いて必要です。メソッドがスローできる他のすべてのタイプの例外は、スロー条項で宣言する必要があります。そうしないと、コンパイルエラーが発生します。
以下は、スロー条項を含むメソッド宣言の一般的な形式です。
タイプMethod-name(parameter-list)スロー例外リスト{//メソッドボディ}ここで、例外リストは、メソッドがスローできるコンマセグメント化された例外リストです。
誤った例を次に示します。この例は、キャッチできない例外をスローしようとします。プログラムは、事実を宣言するためのスロー句を指定していないため、プログラムはコンパイルされません。
//このプログラムにはエラーが含まれています。 string args []){throwone()}}プログラムをコンパイルするには、2つの場所を変更する必要があります。まず、違法な例外を提起するには、throen()を宣言する必要があります。第二に、main()は、例外をキャッチするためにトライ/キャッチステートメントを定義する必要があります。正しい例は次のとおりです。
//これは正しいです。 ){true {throwone();例の出力結果は次のとおりです。
Inside Thronecaught java.lang.illegalaccessexception:デモ