例外処理の蝶きほん
例外処理をしたいケースは2つ。
- 通常だとプログラムが停止するエラーでも停止しないようにする処理
- 「負の数はエラーにする」といった独自に設定したいエラーの処理
通常だとプログラムが停止するエラーを停止しないようにする処理
→try-catchを使う
- エラーが発生する可能性のあるぶぶんをtryでかこむ
- 発生を想定しているエラーが起きた時の処理(ハンドラ)をcatchにかく
例:キーボード入力のStringをintにキャストする
String str = br.readLine(); try { int no = Integer.parseInt(str); } catch (NumberFormatException e) { System.out.println("数字をいれてよ"); }
「負の数はエラーにする」といった独自に設定したいエラーの処理
- 想定するエラーに対応したExceptionのサブクラスを作成
- 作成したエラークラスからインスタンスを生成する
- エラーにしたい条件が発生したら、エラーインスタンスを送出(スロー)する
- スロー文をtryで囲む
- 作成したクラスをキャッチするcacth文を追加する
例:負の数はエラーにする
int num = Integer.parseInt(br.readLine()); if(num < 0){ try{ throw new NoNullException(); } catch(NoNullException e){ System.out.println("数字をいれてよ"); } } else { //正の数におこなう処理 }