🧑‍💻 Spring Framework 講座【第3回】安全なシステム設計の鍵!〜例外処理とコレクションの基礎〜

docs

前回は、Springの理解に不可欠なオブジェクト指向の基本、特にクラス、オブジェクト、インターフェースについて再確認しました。

今回は、業務システムを構築する上で、「もしも」の事態に対応するために必要な知識である「例外処理」と、大量のデータを扱うための「コレクション」について学んでいきましょう。

1. 例外処理(Exception Handling):エラーからシステムを守る

業務システムでは、ユーザーが想定外の値を入力したり、読み込もうとしたファイルが削除されていたりなど、必ず予期せぬエラーが発生します。

このようなエラーを放置すると、プログラムが突然停止(クラッシュ)してしまい、サービス全体が停止する原因になります。これを防ぐのが「例外処理」です。

Javaにおける例外処理は、主に try-catch 構文で行います。

1-1. try-catch 構文の基本

tryブロックの中に「**実行したい処理**」を書き、その処理でエラー(例外)が発生した場合にcatchブロック**に処理が移り、「エラー時の対応」を実行します。

Java

public class ExceptionExample {
    public static void main(String[] args) {
        try {
            // ① 実行したい処理 (ここではゼロ除算エラーを意図的に発生させる)
            int result = 10 / 0; 
            System.out.println("計算結果: " + result); 
            
        } catch (ArithmeticException e) {
            // ② 例外が発生した場合の処理 (ArithmeticException:算術エラー)
            System.out.println("エラーが発生しました!ゼロで割ることはできません。");
            
            // 発生したエラーの詳細を出力 (業務ではログに出力することが多い)
            e.printStackTrace(); 
            
        } finally {
            // ③ try-catchの結果にかかわらず、必ず実行したい処理(オプション)
            System.out.println("例外処理ブロックを終了します。");
        }
    }
}

【ポイント】

  • try: 危険な処理を囲む。
  • catch: 発生した例外の型(例: ArithmeticException)を指定し、リカバリ処理を行う。
  • finally: tryやcatchの後に必ず実行される(例: 開いたファイルを閉じる処理など)。

1-2. throws による例外の伝播

自分で例外を処理せず、「このメソッドを呼び出した側に処理を任せる」ことも可能です。これを**例外の伝播(throw)**と呼びます。

Java

// ファイルが存在しない場合に発生するかもしれない例外を呼び出し元に任せる
public void readFile() throws FileNotFoundException { 
    // ファイル読み込み処理...
    // throwsによって、このメソッドの処理中にエラーが発生したら、
    // メソッドの実行を中断して呼び出し元に例外を渡す
}

Spring Frameworkでは、この例外処理の仕組みを利用して、データベース接続やWebアクセス時のエラーを統一的に処理する機能(AOPエラーハンドリング機能)が提供されています。


2. コレクション(Collections):大量のデータを効率よく扱う

業務システムは、顧客データ、商品リスト、注文履歴など、大量のデータを扱います。これらのデータを効率よく管理するために使うのが「コレクション」です。

Javaのコレクションには主に3つの種類があり、それぞれ特性が異なります。

コレクション名特徴用途
List (リスト)順番があり、同じ要素を複数持てる。順番を保持したいデータ(例:ユーザーの注文履歴)。
Set (セット)重複した要素を持てない。順番は保証されないことが多い。重複を許さないデータ(例:ユニークなIDのリスト)。
Map (マップ)キーのペアでデータを管理する。特定のキーから値を検索したいデータ(例:社員IDと社員情報)。

2-1. Listの基本(ArrayList)

リストは、配列のように使える最も基本的なコレクションです。

Java

import java.util.ArrayList;
import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        // String型のデータを格納するListを作成
        List<String> userList = new ArrayList<>();
        
        // データの追加
        userList.add("佐藤");
        userList.add("田中");
        userList.add("佐藤"); // リストは重複を許す
        
        // データの取得(インデックスは0から始まる)
        String secondUser = userList.get(1); // 田中
        System.out.println("2番目のユーザー: " + secondUser); 
        
        // 全要素のループ処理
        for (String user : userList) {
            System.out.println("ユーザー名: " + user);
        }
    }
}

2-2. Mapの基本(HashMap)

マップは、キーを指定して高速にデータを検索・取得したい場合に非常に便利です。

Java

import java.util.HashMap;
import java.util.Map;

public class MapExample {
    public static void main(String[] args) {
        // キー(Integer)と値(String)のペアを格納するMapを作成
        Map<Integer, String> studentMap = new HashMap<>();
        
        // データの追加 (キー, 値)
        studentMap.put(101, "山本");
        studentMap.put(102, "吉田");

        // キーを指定して値を取得
        String studentName = studentMap.get(101); // 山本
        System.out.println("学籍番号101番: " + studentName);

        // キーの存在チェック
        if (studentMap.containsKey(103)) {
            System.out.println("学籍番号103番は存在します。");
        } else {
            System.out.println("学籍番号103番はいません。");
        }
    }
}

Spring Frameworkでは、これらのコレクションをBeanとして管理したり、Webリクエストのパラメータとして受け取ったりと、システム設計の多くの場面で利用することになります。

✅ 本日のまとめ

  • 例外処理は、予期せぬエラーからシステムを保護するために必須であり、try-catch 構文を使用する。
  • コレクションは大量のデータを効率よく管理するための仕組みであり、**List(順番あり)、Set(重複なし)、Map(キーと値のペア)**が代表的である。

🔔 次回予告

Javaの基礎知識が固まりましたので、いよいよSpring開発の入り口に立ちます。

次回は、Springプロジェクトを管理し、必要なライブラリ(依存関係)を自動で集めてくれる非常に便利なツール、「Maven」と「Gradle」について学びます。Spring Bootプロジェクトの「設計図」であるpom.xmlやbuild.gradleの読み方も解説します。

次回:【第4回】Maven/Gradleの基本とプロジェクト作成 にご期待ください!

コメント

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