ネストされたJava try文

文は入れ子にすることができます試してみてください。それは1つが、別のtryブロック内のステートメントを試みること、です。各入力されたtry文は、異例のコンテキストがスタックにプッシュされます。特別な例外なくcatchハンドラ内のtry文は、スタックをポップする場合は、次のcatchハンドラは、try文の一致かどうかを確認します。このプロセスは、catch節が一致するまで継続する、またはネストされたすべてのtry文がチェック排出されるまでになります。何のcatchステートメントの一致がない場合は、Javaのランタイムシステムは、例外を処理します。以下は、ネストされたtry文の使用例です:
文に入れ子にしてみてください//例。
クラスNestTry {
公共の静的な無効メイン(文字列の引数[]){
しようと{
int型args.length = A;
/ *もしNOコマンドラインを現在は、次のステートメントを生成します、引数ですゼロ除算例外* /。
INT = 42は、B / Aである;
System.out.printlnは( "A =" + A);
試してみてください{//ネストされたブロック
/ *もしコマンドライン、使用される1 Argが、次にゼロ除算例外は、次のコードによって生成されます* /。
ゼロ除算は//; IF(== 1)A = A /(AA)
/ * 2つのコマンドライン引数が使用される場合、範囲外の例外を生成します。* /
IF(== 2){
int型C [] = {1}。
C [42] = 99。//範囲外の例外発生
}
}キャッチ(ArrayIndexOutOfBoundsExceptionが電子){
するSystem.out.println(「範囲外の配列インデックス:」+ e)を、
}
}キャッチ(はArithmeticException E){
するSystem.out.println(「0による除算:」+ E)。
}
}
}

あなたが見ることができるように、プログラムは、tryブロック内のtryブロックをネストされました。プログラムは次のように動作します:あなたは、tryブロックの外側、コマンドラインパラメータは、ゼロ例外によって発生していない場合には、プログラムを実行すると。プログラムコマンドラインの場合は、条件付き実行のパラメータの誤差は、ネストされたtryブロックによってゼロです。ブロックの内部は、この例外に一致しないので、例外は例外があり、処理され、tryブロックの外にそれを渡します。あなたがプログラムを実行する条件の下で2つのコマンドラインパラメータを使用している場合は、tryブロックは、内部の配列境界例外によって生成されました。結果は、それぞれの場合に以下に記載する:
C:> JavaのNestTryの
java.lang.ArithmeticException:除算0によって/ ZEROにより
C:>のJava NestTry
A. 1 =
除算0によって:java.lang.ArithmeticException:/ ZEROによって
C:> JavaのNestTryワンツー
2 =
java.lang.ArrayIndexOutOfBoundsException:配列インデックス・オブ・バウンドOUTを

メソッドが呼び出されると、ネストされたのtry文が発生し、非常に微妙なことができます。たとえば、メソッドのtryブロックの呼び出しに入れることができます。メソッドの内部では、別のステートメントを試してみてください。この場合は、この方法の内側には、まだプロセスでネストされたtryブロック外部コールを試しています。以下は、ネストされたtryブロック移動方法nesttry()内部、前の例の変形例である:
。/ *暗黙的に入れ子にしてみ文が経由することができます* /メソッドの呼び出し
MethNestTry {クラス
の静的な無効nesttry(INT A){
/ {してみてください/ネストされたブロックのtry
/ *もしコマンドラインの一つはArgを使用され、その後、-A-ZEROの除算例外によって次のコードによって生成されます* /。
IF(== 1)A = A /(AA); //部門によって0
/ *もし2つのコマンドラインを使用する引数は、範囲外の例外が発生* /
IF(== 2){
int型C [] = {} 1;
C = 99 [42です]。境界例外- OUTの生成- //
}
{}キャッチ(ArrayIndexOutOfBoundsExceptionがE)
System.out.println(「範囲外の配列インデックス:」+ E)。
}
}

公共の静的な無効メイン(文字列引数[]){
試みる{
int型A = args.length。
/ *何のコマンドライン引数が存在しない場合は、次の文は、ゼロ除算例外が発生します。* /
INT B = 42 /。
System.out.println(「A =」+ A)。
nesttry(A)。
}キャッチ(はArithmeticException電子){
するSystem.out.println(「0による除算:」+ E)。
}
}
}

プログラムの出力は、前の例と同じです。

VII。マルチスレッドプログラミング
1 スレッドの概念
2. Javaのスレッドモデル
3. メインスレッド
4. スレッド作成
5. マルチスレッド作成
6 (使用のisAliveを()と結合)の
7 スレッド優先
8 スレッド同期
9。スレッド間通信
10. スレッドのデッドロック
11 スレッドは、サスペンド再開して終了

おすすめ

転載: blog.csdn.net/Javaxuxuexi/article/details/92428298