第9章 プレゼン資料

第9章 例外処理,パッケージ
9.1 例外処理
9.2 ガーベッジコレクション
9.1 例外処理
コマンドラインの引数に 7 が与えられたときは “あたり” 、
それ以外の数が与えられたときは “はずれ”
と表示する右のプログラムは、
このままでは引数の与え方次第で、例外を起こし終了する。
•
•
引数を何も与えず起動したとき
ArrayIndexOutOfBoundsException という例外
引数に10進表記でない文字列を与えたとき
NumberFormatException という例外
例外は、プログラムが正常に期待される以外の事態に
出会ったとき発生し、何も設定されていないと、
例外を起こしたスレッドは終了する。
例外のときのメッセージ →
正常なときのメッセージ ↓
public class Mikuji91 {
public static void main(String[] args){
if(mikuji(args[0])){
System.out.println("あたり");
}else{
System.out.println("はずれ");
}
}
static boolean mikuji(String s){
int number;
number = Integer.parseInt(s);
return (number == 7); // number と 7 が等しければ true,
}
// 等しくなければ false が返る`
}
例外が発生したときにスレッドを終了させるのではなく、例外に対応した処理をさせて実行を継続させることもできる。
それには、try-catch 文 を用いる。
try
起きる可能性のある例外が複数あるとき、
1つの try 文に複数の catch 節をつけられる。
例外を起こす文を含むブロック
catch(
例外オブジェクトの型
仮引数
例外が起きたときに行うブロック
例えば1つ前のスライドにあるプログラムで、
引数に10進表記でない文字列を与えたとき
例外処理をさせる場合は、右の様に書き変える。
if 文 を try ブロックの中に入れることで、
NumberFormatException の例外のときエラーメッセージを、
mikuji メソッドの返値が真のとき “あたり” を、
mikuji メソッドの返値が偽のとき “はずれ” を表示するように
↓ 実行結果 ↓
)
例外オブジェクトの型を Exception で
すべての例外を捕らえる。
public class Mikuji93 {
public static void main(String[] args){
try{
if(mikuji(args[0])){
System.out.println("あたり");
}else{
System.out.println("はずれ");
}
}catch(NumberFormatException e){
System.out.println("引数に数を指定してください");
}
}
static boolean mikuji(String s){
int number;
number = Integer.parseInt(s);
return (number == 7); // number と 7 が等しければ true,
}
// 等しくなければ false が返る`
}
9.2 ガーベッジコレクション
new を用いるとメモリ内のヒープ領域にオブジェクトを生成する
プログラム中で不必要になったオブジェクトをヒープ上から消す
解放されたメモリ領域を再利用する
ガーベッジコレクションは、どこからも参照されていないオブジェクトをヒープ上から探し消去す
るため、プログラムの実行に影響を与えることはない。
ガーベッジコレクションは自動的に行われるが、
Sys-tem.gc(); メソッド呼び出しで、プログラムの中から明示的に起動可能