【Java】自作例外処理で年齢(正の整数)判定をする

■概要

コンソールに年齢を入力し、入力した値をコンソールに表示する処理を作成する。

年齢判定判定処理は以下の通り。

  • 入力値が整数以外の場合は例外エラーとする。
  • 入力値がマイナスの場合、例外エラーとする。

■ディレクトリ構成

Javaソースのディレクトリ構成は以下の通りとする。

OriginalException(プロジェクト名)
├── bin
│   ├── exception
│   │   └── InvalidAgeException.class
│   └── main
│       └── AgeJudgmentMain.class
└── src
    ├── exception
    │   └── InvalidAgeException.java
    └── main
        └── AgeJudgmentMain.java

■フローチャート

「AgeJudgmentMain.java」の処理フローを以下に示す。

■サンプルコード

「InvalidAgeException.java」および「AgeJudgmentMain.java」のコードを以下に示す。

・InvalidAgeException.java

package exception;

/*
 * 年齢判定例外クラス
 */
public class InvalidAgeException extends Exception{
	// 警告を回避するための宣言
	private static final long serialVersionUID = 1L;
	
	// コンストラクタ
	public InvalidAgeException(String exception_message, String input_data){
		// Exceptionクラスのコンストラクタ呼び出し
		super(exception_message + "入力値:" + input_data);
	}
}

・AgeJudgmentMain.java

package main;

import java.util.Scanner;

import exception.InvalidAgeException;

/*
 * 年齢判定メインクラス
 */
public class AgeJudgmentMain {
	public static void main(String[] args) {
		int age;	// 年齢初期値
		
		// 入力値の設定
		Scanner scanner = new Scanner(System.in);
		System.out.println("年齢を入力してください:");
		
		try {
			// 整数判定
			if (scanner.hasNextInt()) {
				age = scanner.nextInt();
			}else {
				throw new InvalidAgeException("入力値が整数ではありません。", scanner.next());
			}

			// マイナス判定
			if (age < 0) {
				throw new InvalidAgeException("入力値がマイナスの値です。", String.valueOf(age));
			} else {
				System.out.println("年齢は" + age + "才です");
			}

		} catch (InvalidAgeException e) {
			System.out.println("例外エラー:" + e );

		}finally {
			scanner.close();
		}
	}
}

■実行結果

▼正常系

・コンソールに「20」を入力した時の結果

年齢を入力してください:
20
年齢は20才です

▼異常系:小数を含む

・コンソールに「20.7」を入力した時の結果

年齢を入力してください:
20.7
例外エラー:exception.InvalidAgeException: 入力値が整数ではありません。入力値:20.7

▼異常系:文字列

・コンソールに「aiueo」を入力したときの結果

年齢を入力してください:
aiueo
例外エラー:exception.InvalidAgeException: 入力値が整数ではありません。入力値:aiueo

▼異常系:マイナスの整数

・コンソールに「-20」を入力した時の結果

年齢を入力してください:
-20
例外エラー:exception.InvalidAgeException: 入力値がマイナスの値です。入力値:-20

■参考

Javaの例外処理については、以下を参照。

タイトルとURLをコピーしました