カテゴリ: Javaの例外処理 更新日: 2025/11/10

Javaの例外の種類を完全解説!Checked ExceptionとUnchecked Exceptionの違いとは?

352
Java の例外の種類(Checked Exception と Unchecked Exception)

先生と生徒の会話形式で理解しよう

生徒

「Javaの例外処理ってよく聞きますけど、例外の種類があるって本当ですか?」

先生

「はい、Javaでは例外に種類があって、大きく分けてChecked ExceptionUnchecked Exceptionの2つがあります。」

生徒

「その2つってどう違うんですか?実際のコードでも違いがあるんですか?」

先生

「とても重要なポイントですね。それでは、Javaの例外の種類と違いについて、コード例を交えながら丁寧に解説していきましょう。」

1. Javaの例外とは?例外処理の基本

1. Javaの例外とは?例外処理の基本
1. Javaの例外とは?例外処理の基本

Javaでは、プログラムの実行中に発生するエラーを「例外(Exception)」と呼びます。例外は、コードの実行を途中で止めたり、予期せぬ動作を防いだりするために重要な仕組みです。

Javaの例外は、オブジェクトとして扱われ、Exceptionクラスを継承することでさまざまな種類が存在します。

2. Checked Exception(チェック例外)とは?

2. Checked Exception(チェック例外)とは?
2. Checked Exception(チェック例外)とは?

Checked Exceptionは、Javaでコンパイル時にチェックされる例外です。これは、プログラムの構文チェック時に、必ずtry-catchブロックやthrowsキーワードで対処する必要があります。

代表的な例としては、IOExceptionSQLExceptionがあります。ファイル操作やデータベース接続など、外部とのやりとりが関係する場面で発生することが多いです。


import java.io.FileReader;
import java.io.IOException;

public class CheckedExample {
    public static void main(String[] args) {
        try {
            FileReader reader = new FileReader("sample.txt");
            reader.read();
            reader.close();
        } catch (IOException e) {
            System.out.println("ファイル操作中にエラーが発生しました: " + e.getMessage());
        }
    }
}

このコードでは、FileReaderを使う際にIOExceptionが発生する可能性があるため、try-catchで囲む必要があります。

3. Unchecked Exception(非チェック例外)とは?

3. Unchecked Exception(非チェック例外)とは?
3. Unchecked Exception(非チェック例外)とは?

Unchecked Exceptionは、実行時に発生する例外で、RuntimeExceptionを継承するクラスです。これは、コンパイル時に対処が強制されないため、try-catchが無くてもコンパイルは通ります。

代表的な例外として、NullPointerExceptionArithmeticExceptionArrayIndexOutOfBoundsExceptionなどがあります。


public class UncheckedExample {
    public static void main(String[] args) {
        String text = null;
        System.out.println(text.length()); // NullPointerException
    }
}

このコードでは、nullの文字列に対してlength()を呼び出しており、NullPointerExceptionが実行時に発生します。

Javaをこれから始める人や、 オブジェクト指向の考え方を基礎から理解したい人には、 定番の入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

4. CheckedとUncheckedの違いを比較

4. CheckedとUncheckedの違いを比較
4. CheckedとUncheckedの違いを比較

ここで、Checked ExceptionUnchecked Exceptionの違いを表でまとめてみましょう。

項目 Checked Exception Unchecked Exception
例外の種類 IOException, SQLExceptionなど NullPointerException, ArithmeticExceptionなど
コンパイル時チェック 必要(try-catchやthrows) 不要
継承元 Exception RuntimeException
主な用途 外部リソースとのやりとり プログラム内部のミスやバグ

5. 実際のプロジェクトでの使い分け

5. 実際のプロジェクトでの使い分け
5. 実際のプロジェクトでの使い分け

実際のJavaアプリケーションでは、次のような使い分けをします:

  • ファイル読み込みやDB接続などはChecked Exception
  • nullチェックや割り算のゼロなど、プログラムのミスはUnchecked Exception

Javaの例外処理では、開発者が適切な設計を行うことが求められます。不要にthrowsで宣言すると、逆に読みづらくなってしまうため注意が必要です。

6. 自作の例外クラスとChecked/Uncheckedの違い

6. 自作の例外クラスとChecked/Uncheckedの違い
6. 自作の例外クラスとChecked/Uncheckedの違い

Javaでは、独自の例外クラスを作成して、Checkedとして扱うか、Uncheckedとして扱うかを選べます。


// Checked Exception の例
class MyCheckedException extends Exception {
    public MyCheckedException(String msg) {
        super(msg);
    }
}

// Unchecked Exception の例
class MyUncheckedException extends RuntimeException {
    public MyUncheckedException(String msg) {
        super(msg);
    }
}

このように、Exceptionを継承すればCheckedになり、RuntimeExceptionを継承すればUncheckedとして動作します。

7. 例外処理のベストプラクティス

7. 例外処理のベストプラクティス
7. 例外処理のベストプラクティス

Java初心者の方には、例外を投げるだけでなく、どう設計すべきかも大切な視点です。

  • 外部リソースの操作は必ずtry-catchで囲う
  • NullPointerExceptionを防ぐために、nullチェックを徹底する
  • 意味のあるエラーメッセージをつける
  • 独自の例外クラスは必要最小限にする

Javaの例外処理を適切に使い分けることで、バグの少ない、安全なコードを書くことができます。

Javaの例外処理の一覧へ
新着記事
FlutterのMVP・MVVMアーキテクチャの違いと使い分け
FlutterのMVP・MVVMアーキテクチャの違いと使い分けを初心者向けに解説!
オニオンアーキテクチャの基本とFlutterでの適用例
オニオンアーキテクチャの基本とFlutterでの適用例を初心者向けに解説
クリーンアーキテクチャとは?Flutterでの導入メリット
クリーンアーキテクチャとは?Flutterでの導入メリットをやさしく解説
【AWS】RDS for Oracleの特徴・できないこと・バージョン・料金まとめ
【AWS】RDS for Oracleの特徴・できないこと・バージョン・料金を初心者向けに徹底解説
人気記事
インスタンスタイプの料金比較と最適な選び方(最新2025年版)
AWSのインスタンスタイプの料金比較と最適な選び方【2025年最新版】
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク