------------------------------------------------------------------------------------------- ■ 例外表現 実例 --- 実行するときに、2つのデータを設定して割り算を行うプログラム ------------------------------------------------------------------------------------------- ※注意!! --- 1つのファイルに2つ以上のクラスを書くことはできますが、publicなクラス必ず1つでなければなりません! package reigai; public class ReigaiDemo001{ //--------------------------------------------------------------------------------------- //2つの数値を割り算するメソッド(関数)を例外発生ケースを考慮して作成 public static double waru(double num1, double num2)throws ArithmeticException, WaruZeroException { if(num1==0){ throw new ArithmeticException("0を割る計算は無効です"); } if(num2==0){ throw new WaruZeroException("0で割ると常に無限大になります"); } return num1 / num2; } //--------------------------------------------------------------------------------------- //実行部分であるmain()関数を作成 public static void main(String[] args){ try{ //適切な2つのデータが設定された場合の正常処理を記述 String number1_string = args[0];//実行時に設定されたデータを代入 double number1 = Double.parseDouble(number1_string); String number2_string = args[1];//実行時に設定されたデータを代入 double number2 = Double.parseDouble(number2_string); //シンプルな割り算処理を行う double kekka = waru(number1, number2); System.out.println(kekka); //以下、設定されたデータが不適切な場合の例外処理をケース毎に設定 }catch(WaruZeroException e){ System.out.println(e.getMessage()); }catch(ArithmeticException e){ System.out.println(e.getMessage()); }catch(ArrayIndexOutOfBoundsException e){ System.out.println("実行するときに、割り算をする2つの数値データを指定してください"); }catch(NumberFormatException e){ System.out.println("文字データは割り算できません"); } }//main()ブロックの終わり }//ReigaiDemoクラスの終わり //------------------------------------------------------------------- //------------------------------------------------------------------- //0で割った場合の例外をあらたに命名したオリジナル例外クラス class WaruZeroException extends ArithmeticException{ //例外発生の際、カッコ内に設定したメッセージを操作できるコンストラクタ WaruZeroException(String message){ super(message); } //自動的に作成されるコンストラクタ WaruZeroException(){ super(); } }//WaruZeroExceptionクラスの終わり