第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(); メソッド呼び出しで、プログラムの中から明示的に起動可能
© Copyright 2024 ExpyDoc