以下のプログラムには、題意を明確にするためにあえて無意味な変数名を使用しています。
また、本来、Javaではクラスは通常1ファイルに1つずつ書きますが、演習用に便宜的に複数のクラスを1つのファイルに書いていることがあります。
1.プリントスタックトレースの解読
以下のソースコードを実行してエラーのプリントスタックトレースを読み、例外発生時にどこを見れば素早くエラーのあるソースコードにたどり着けるかを答えなさい。
package chap12;
public class Q01 {
public static void main(String[] args) {
String str = "Java";
try {
System.out.print("J");
Integer.parseInt(str);
System.out.print("A");
} catch (NumberFormatException e) {
System.out.print("V");
e.printStackTrace();
}
System.out.println("a");
}
}
2.try...catch...finally 文
以下のソースコードを実行したとき何が出力されるかを答えなさい。
package p13;
class ExceptionTest1 {
public void func(int i, int j) {
try {
System.out.print("J");
int k = i / j;
System.out.print("A");
} catch (ArithmeticException e) {
System.out.print("V");
} finally {
System.out.print("a");
}
}
}
public class Q02 {
public static void main(String[] args) {
ExceptionTest1 a = new ExceptionTest1();
a.func(1, 2);
}
}
3.ArithmeticException
上記と同じパッケージに以下のJavaファイルを追加して実行したとき何が出力されるかを答えなさい。
package chap12;
public class Q03 {
public static void main(String[] args) {
ExceptionTest1 a = new ExceptionTest1();
a.func(1, 0);
}
}
4.NullPointerException
以下のソースコードを実行したとき何が出力されるかを答えなさい。
package chap12;
public class Q04 {
public static void main(String[] args) {
int[] array = null;
System.out.print("J");
try {
array[0] = 0;
System.out.print("A");
} catch (ArithmeticException e) {
System.out.print("V");
} catch (NullPointerException e) {
System.out.println("a");
}
}
}
5.NumberFormatException
以下のソースコードを実行したとき何が出力されるかを答えなさい。
package chap12;
public class Q05 {
public static void main(String[] args) {
String str = "Java";
try {
System.out.print("J");
Integer.parseInt(str);
System.out.print("A");
} catch (NumberFormatException e) {
System.out.print("V");
}
System.out.println("a");
}
}
10.オリジナル問題作成
将来の後輩のために良い問題が出来たら教えてください。
以上。