5.7 性的変数と静的メソッド

独習Java
・ 8.1
例外処理
・ 8.2
catch ブロックの検索
12月 5日
小笠原 一恵
例外
プログラムの実行中に発生した問題を通知する
ために、実行時に生成されるオブジェクトのこと
原因
・ 整数を0で除算した
・ ファイルが見つからない
・ 数値の形式が不正である
etc.
例外(整数を0で除算)
class error1{
出力結果
public static void main(String args[]){
a();
}
static void a(){
b();
}
static void b(){
int i=1;
int j=0;
System.out.println(i/j);
}
}
Exception in thread "main"
java.lang.ArithmeticException: /
by zero
at error1.b(error1.java:9)
at error1.a(error1.java:5)
at
error1.main(error1.java:3)
8.1 例外処理
try{
// tryブロック
try ブロック
例外の発生を監視する必要があるコード
}
catch (ExceptionType1 parm1){
// 例外処理ブロック
}
・
・
catch ブロック
例外オブジェクトの種類がcatchブロックパのラ
メータと一致した場合はその処理を実行
一致しなければ次のcatch節へ
catch (ExceptionTypeN parmN){
// 例外処理ブロック
}
finally{
//finallyブロック
}
finally ブロック
Catchブロックの処理が終了したら実行
例外処理
class Divider{
public static void main(String
args[]){
try{
int i=Integer.parseInt(args[0]);
catch(ArrayIndexOutOfBoundsException e){
System.out.println("ArrayIndexOutOfBoundsExc
ption");
}
catch(NumberFormatException e){
int j=Integer.parseInt(args[1]);
System.out.println(i/j);
}
System.out.println("NumberFormatException");
}
finally{
catch(ArithmeticException e){
System.out.println("Arithmetic
Exception");
}
System.out.println("Finally block");
}
}
}
8.2 catch ブロックの検索
例外オブジェクトに対応するcatchブロックがない場合
→ 他のtryブロックのcatchブロックが検索される
→ 既定の例外ハンドラが呼び出されて、例外メッセージが
表示されてプログラムの実行が停止する
宿題
P244の練習問題の1.のプログラムを作り、
catchブロックの検索がどのように行なわれ
ているかを理解してください