Javaコードは、自分で作成されたコード、Java開発環境パッケージのコード、またはJavaランタイムシステムなどの例外をスローできます。誰であろうと、Java Throwステートメントを通じて例外をスローできます。メソッドからスローされた例外は、スロー条項で使用する必要があります。
1.スロー例外をスローします
メソッドに例外があるかもしれませんが、そのような例外を処理する能力がない場合は、Throws句を使用して、メソッド宣言でスロー例外を宣言できます。たとえば、走るときに車が故障する可能性があり、車自体がこの障害を処理できないため、ドライバーに対処してください。
Throwsステートメントは、例外タイプがスローされている場合、スローする場合の例外のタイプを宣言するために使用されます。コンマを使用して複数の例外を分割できます。スローステートメントの構文形式は次のとおりです。
MethodNameスローException1、Exception2、..、Exceptionn
{
}
メソッド名の例外1、例外2、…、例外の後にスローすることは、スローされる例外のリストです。メソッドが例外の例外リストをスローすると、メソッドはこれらのタイプとそのサブクラスタイプの例外を処理しませんが、メソッドを呼び出してそれによって処理されるメソッドにスローされます。例えば:
java.lang.exception; public class testexception {static void pop()は、メソッドを定義し、negativearraysizeceception inxceptionをスローします(string [] args){//メソッドトライ{//ステートメントハンドル例外情報pop();例外をスロー "); //出力例外情報}}}
スローキーワードを使用して発信者に例外をスローした後、発信者が例外を処理したくない場合は、引き続き投げ続けることができますが、最終的には例外を処理できる発信者がいる必要があります。
POPメソッドは、例外NegativeArraySizeexceptionを処理しませんが、メイン関数によって処理されます。
例外をスローするためのスローのルール:
1)それが未チェックの例外、つまりエラー、runtimeexception、またはそのサブクラスである場合、スローキーワードを使用せずにスローされる例外を宣言できますが、コンパイルはスムーズに渡されますが、システムによって実行されます。ランタイム。
2)メソッドによってスローされる可能性のあるチェックされた例外を宣言する必要があります。つまり、メソッドにチェック可能な例外がある可能性がある場合、Try-Catchステートメントでキャッチされるか、スロー条項で宣言されます。そうしないと、コンパイルエラーが発生します。
3)例外がスローされた場合にのみ、メソッドの発信者は例外を処理または再スローする必要があります。メソッド発信者が例外を処理できない場合、それを全体として飲み込むのではなく、それを投げ続ける必要があります。
4)呼び出し方法は、チェック可能な例外処理および宣言規則に従う必要があります。メソッドが上書きされている場合、上書きメソッドとは異なる例外を宣言することはできません。宣言された例外は、オーバーライドされた方法で宣言された例外の類似またはサブクラスでなければなりません。
例えば:
方法で例外が発生する可能性があると判断するための基礎は、次のとおりです。
1)メソッドにはスローステートメントがあります。たとえば、上記のmethod7()メソッドのキャッチコードブロックにはスローステートメントがあります。
2)他の方法が呼び出され、他の方法はスロー句を使用して、スローする例外を宣言します。たとえば、method3()メソッドはmethod1()メソッドを呼び出し、method1()メソッドはioexceptionがスローされることを宣言しているため、ioExceptionがmethod3()メソッドで発生する可能性があります。
2。スローを使用して例外をスローします
スローは常に関数本体に表示され、タイプスロー可能なタイプの例外をスローするために使用されます。このプログラムは、スローステートメントの直後に終了し、実行できない後のステートメント、そしてそれを含むすべてのTRYブロック(おそらく上位レベルの呼び出し関数)で、それを一致させるCACT句を含むTRYブロックを探します。裏返し。
例外は例外クラスのインスタンスオブジェクトであることがわかっており、スローステートメントでスローされる例外クラスのインスタンスオブジェクトを作成できます。このステートメントの構文形式は次のとおりです。
新しい例外をスローします。
たとえば、iOExceptionクラスの例外オブジェクトをスローします。
新しいioExceptionを投げます。
クラススロー可能またはサブクラスをスローできるインスタンスオブジェクトのみをスローすることに注意する必要があります。次の操作が正しくありません。
新しい文字列( "例外");
これは、Stringがスロー可能なクラスのサブクラスではないためです。
チェックの例外がスローされている場合は、メソッドがメソッドヘッダーを投入する可能性のある例外のタイプを宣言する必要があります。このメソッドの発信者は、スローされた例外を処理することもチェックする必要があります。
すべてのメソッドが取得した例外レイヤーをレイヤーごとに投げると、JVMは最終的に処理され、処理も非常に簡単です。これは、例外メッセージとスタック情報を印刷するためです。エラーまたはruntimeexceptionがスローされている場合、メソッドの発信者には例外を処理するオプションがあります。
パッケージテスト。 0新しいmyexception(「除数は負にすることはできません」); ; int b = 0; .out.println(e。getmessage()); catch(exchang on e){//他の例外system.out.println( "他の例外がプログラムで発生しました");文字列メッセージ。