Java中級

中級 Javaで学ぶ例外設計|練習問題編

導入

例外処理は、プログラムの堅牢性を保つために不可欠な要素です。特に、業務アプリケーションでは、予期しないエラーが発生することが頻繁にあります。これに対処するためには、適切な例外設計が求められます。本記事では、具体的なシチュエーションを通じて、例外設計の重要性とその実装方法について探ります。

教科書レベルの解説(例外設計)

重要な概念の整理

例外設計において考慮すべきポイントは、例外の発生を適切に捕捉し、ユーザーやシステムに対して意味のある情報を提供することです。特に、業務ロジックにおける例外は、システム全体の動作に影響を与える可能性があるため、慎重に設計する必要があります。具体的には、カスタム例外を作成し、エラーメッセージやエラーコードを明確にすることが求められます。

コード例(Java)


// カスタム例外の定義
class InsufficientFundsException extends Exception {
    public InsufficientFundsException(String message) {
        super(message);
    }
}

// 銀行口座クラス
class BankAccount {
    private double balance;

    public BankAccount(double initialBalance) {
        this.balance = initialBalance;
    }

    public void withdraw(double amount) throws InsufficientFundsException {
        if (amount > balance) {
            throw new InsufficientFundsException("残高不足: " + amount + "は引き出せません。");
        }
        balance -= amount;
    }

    public double getBalance() {
        return balance;
    }
}

// メインクラス
public class Main {
    public static void main(String[] args) {
        BankAccount account = new BankAccount(1000);
        try {
            account.withdraw(1500);
        } catch (InsufficientFundsException e) {
            System.out.println(e.getMessage());
        }
    }
}

コードの行ごとの解説

  1. カスタム例外の定義: InsufficientFundsExceptionを作成し、エラーメッセージをカスタマイズできるようにします。
  2. BankAccountクラスの定義: 銀行口座の基本機能を持つクラスを作成します。初期残高を設定するコンストラクタがあります。
  3. withdrawメソッド: 引き出し金額が残高を超えた場合、カスタム例外をスローします。
  4. メインメソッド: BankAccountのインスタンスを作成し、withdrawメソッドを呼び出します。例外が発生した場合は、適切にキャッチしてメッセージを表示します。

練習問題編

以下の練習問題を通じて、例外設計に関する理解を深めましょう。

  1. 問題1: カスタム例外を使って、商品が在庫切れの場合にエラーをスローするクラスを作成してください。
  2. 問題2: 例外をキャッチした際に、エラーログをファイルに記録するメソッドを実装してください。
  3. 問題3: 複数の例外を同時に扱うために、例外のチェーンを作成する方法を示してください。

まとめ

  • カスタム例外を利用することで、エラーハンドリングをより明確にすることができる。
  • 業務ロジックにおける例外は、システム全体に影響を与えるため、慎重な設計が求められる。
  • 例外処理の実装は、ユーザーに対して有益な情報を提供する手段でもある。