練習問題 解答
8.6 練習問題 解答
問1
① ×:対応する例外クラスがcatchブロックに設定されていないと処理は行われない。
② ○:finallyブロックは、例外発生の有無に関わらず必ず処理されます。
③ ×:例外クラスの下位クラスから上位クラスの順に並べないと、コンパイルエラーになります。
④ ○:変数から例外クラスの情報を取得することができます。
⑤ ×: 例外には必ず処理しないといけないチェック例外が存在します。
問2
③ 「Yellow」を表示する前の処理で例外が発生します。
問3
① ×:この例外が発生するクラスは利用していない。
② ○:入力数値が無い(1回目で999を入力)場合発生します。
③ ○:1つ目の繰り返し処理の条件が間違っているため、4回目の数値入力で発生します。
④ ×:型を変換するような処理を行っていない。
⑤ ○:intデータしかキーボード入力を受けつけないので、整数値以外を入力すると発生します。
問4
Practice0801.java
※例外処理を追加した部分のみを記載しています。その他問3のSample.javaと同じです。
まずはwhileブロック内の処理全てをtryブロックで囲んでいます。そしてcatchの()内に処理する例外クラス「InputMismatchException」を指定しています。catchブロック内では画面にメッセージを出力し、「sin.next();」メソッドを利用してバッファのクリアを行っています。
catchブロックの処理が終っても処理自体がwhile内なので、繰り返し処理の先頭に戻り再入力を促します。
問5
Practice0802.java
※例外処理を追加した部分のみを記載しています。その他問題8-3のSample.javaと同じです。
まずはメインメソッド内の処理全てをtryブロックで囲んでいます。そしてcatchの()内に全ての例外を処理する例外クラス「Exception」を指定しています。catchブロック内では例外のオブジェクトを指し示す変数「e」を利用して、例外の詳細情報を画面に表示します。catch以降の処理は無いのでこのまま処理が終了します。