ハンズオン脳:
多層例外がキャッチ-1:
は、ArrayIndexOutOfBoundsException /内側のtry-catchの
はArithmeticException発生
:キャッチ多層例外-2
は、ArrayIndexOutOfBoundsException /外側のtry-catchを
複数のネストされた試しがある場合...最後に、機会がついにの実装に特に注意を払って...キャッチ。
、EmbedFinally.javaの例を読んで、それを実行し、出力の概要を遵守してください。
、EmbedFinally.javaの例を読んで、それを実行し、出力の概要を遵守してください。
##重要な注意:
最後にネストしている場合には、異なる位置にスローされた例外をスロー異なるレベルで、finallyブロックの実行の異なる順序になることがあります。
Javaの言語の例外処理では、finallyブロックの役割は何が起こるかに関係なく、finallyブロック内のコードが実行されることを確実にするためです。プログラムの実装は任意の文が実行されるように、現在の関数にし、関数の本体の外に返すためにコールの終了を意味しますので、のみ(満たさexit関数がない限り)を実行することができますので、finallyブロックが復帰する前に復帰する前に実行されるのコードA。また、試して、最終的またはキャッチ最終的にリターンを持って、finallyブロックがreturn文のリターンの他の場所でカバーされる場合、最終的には最終的には、戻り値がある呼び出し元に戻りました。
パッケージclassJava;
インポートjava.util.Scanner;
インポートjava.util.Scanner;
輸入javax.swing.JOptionPane;
パブリッククラスAboutException {
公共の静的な無効メイン(文字列[] A)
{
int型I = 100。
int型J。
int型のk;
スキャナのスキャン=新しいスキャナ(System.in);
J = scan.nextByte()。
K = I / J。
公共の静的な無効メイン(文字列[] A)
{
int型I = 100。
int型J。
int型のk;
スキャナのスキャン=新しいスキャナ(System.in);
J = scan.nextByte()。
K = I / J。
試す
{
K = I / J。
}
キャッチ(はArithmeticException電子)
{
するSystem.out.println( "被0除。" + e.getMessage())。
}
キャッチ(例外e)
{
IF(EのinstanceofはArithmeticException)
のSystem.out.println( "被除0")。
他
{
のSystem.out.println(e.getMessage())。
}
}
最後に
{
JOptionPane.showConfirmDialog(NULL、 "OK")。
}
のSystem.out.println(K)。
}
}
{
K = I / J。
}
キャッチ(はArithmeticException電子)
{
するSystem.out.println( "被0除。" + e.getMessage())。
}
キャッチ(例外e)
{
IF(EのinstanceofはArithmeticException)
のSystem.out.println( "被除0")。
他
{
のSystem.out.println(e.getMessage())。
}
}
最後に
{
JOptionPane.showConfirmDialog(NULL、 "OK")。
}
のSystem.out.println(K)。
}
}