カテゴリ: Javaの例外処理 更新日: 2026/06/23

Javaの例外とは?エラーとの違いを初心者向けにやさしく解説!

347
Java の例外とは?エラーとどう違うのかを理解しよう

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

生徒

「Javaでプログラムの途中で変な動きをしたり止まったりするんですけど、これってエラーですか?」

先生

「それは『例外』と呼ばれるものかもしれません。Javaでは、エラーとは別に『例外(Exception)』という仕組みがあるんですよ。」

生徒

「えっ、エラーと例外って違うんですか?知りませんでした!」

先生

「そうなんです。これからJavaの例外処理の基本と、エラーとの違いについて一緒に見ていきましょう。」

1. Javaにおける例外とは?

1. Javaにおける例外とは?
1. Javaにおける例外とは?

Javaの例外(Exception)とは、プログラムを実行している最中に発生する「想定外のトラブル」のことです。プログラミングの世界では、コードの書き間違い(文法エラー)とは別に、実行してみないと分からない問題が起こることがあります。

たとえば、「読み込もうとしたファイルが削除されていた」「ネットワークが急に切れた」「数字を入力すべき場所に文字が入力された」といった状況です。これらはプログラムそのものが間違っていなくても、外部の状況によって発生してしまいます。

Javaでは、こうしたトラブルが発生すると「例外という信号」が投げられ、そのまま放置するとプログラムはそこで強制終了してしまいます。実際のプログラムで、どのような動きになるか簡単なサンプルを見てみましょう。

【未経験者向け】例外が発生する例(0での割り算)

算数と同じように、コンピュータも「0」で数字を割ることはできません。実行するとどうなるか確認してみましょう。


public class Main {
    public static void main(String[] args) {
        System.out.println("計算を開始します。");
        
        // 10を0で割る(コンピュータでは計算できない操作)
        int result = 10 / 0;
        
        System.out.println("計算結果は " + result + " です。");
        System.out.println("プログラムを終了します。");
    }
}
実行結果(エラーメッセージの表示)

計算を開始します。
Exception in thread "main" java.lang.ArithmeticException: / by zero
	at Main.main(Main.java:6)

実行結果を見ると、1行目の「計算を開始します。」は表示されていますが、割り算の箇所でArithmeticException(算術例外)というものが発生し、それ以降の処理(プログラムの終了メッセージなど)が実行されずに止まってしまっています。

このように、予期せぬ事態でユーザーを困らせないために、Javaには「例外が発生しても、安全に別の処理へ切り替える」ための例外処理という仕組みが備わっています。これをマスターすることで、どんな状況でも止まらない、信頼性の高いアプリを作れるようになります。

2. エラー(Error)との違いを理解しよう

2. エラー(Error)との違いを理解しよう
2. エラー(Error)との違いを理解しよう

Javaには「例外(Exception)」のほかに、「エラー(Error)」と呼ばれるものもあります。見た目は似ていますが、意味と対処法が違います。

  • 例外(Exception):ファイルが見つからない、配列の範囲外にアクセスした、などのプログラム内でよく起きる問題。開発者が処理可能。
  • エラー(Error):メモリ不足や仮想マシン(JVM)の内部障害など、基本的に開発者が対処できない致命的な問題。

つまり、「例外」は予測して対処できる問題、「エラー」はシステム的に厳しい状況という理解でOKです。

3. Javaの例外の種類を知ろう

3. Javaの例外の種類を知ろう
3. Javaの例外の種類を知ろう

Javaの例外には大きく分けて2つの種類があります。

  • チェック例外(Checked Exception)
  • 非チェック例外(Unchecked Exception)

チェック例外は、必ず例外処理を書く必要があるものです。例えば、ファイルを開くときのIOExceptionなどがそれにあたります。

一方、非チェック例外は、開発者が必要に応じて例外処理を追加できるものです。NullPointerExceptionなどが代表的です。

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

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

※ Amazon広告リンク

4. 例外処理の基本:try-catch構文を覚えよう

4. 例外処理の基本:try-catch構文を覚えよう
4. 例外処理の基本:try-catch構文を覚えよう

Javaでは、例外を処理するためにtry-catch構文を使います。以下は基本的な構文です。


public class ExceptionExample {
    public static void main(String[] args) {
        try {
            int result = 10 / 0;
            System.out.println("結果:" + result);
        } catch (ArithmeticException e) {
            System.out.println("0で割ることはできません!");
        }
    }
}

この例では、0で割るという処理でArithmeticExceptionが発生します。それをcatchブロックでキャッチして、プログラムの異常終了を防いでいます。


0で割ることはできません!

5. よくある例外とその意味

5. よくある例外とその意味
5. よくある例外とその意味

Javaで初心者がよく遭遇する例外の代表例をいくつか紹介します。

  • NullPointerExceptionnullのオブジェクトにアクセスしようとしたとき
  • ArrayIndexOutOfBoundsException:配列の範囲外にアクセスしたとき
  • NumberFormatException:文字列を数値に変換できなかったとき
  • IOException:ファイル操作中に問題が発生したとき

これらは、エラーではなく「例外」なので、catchで適切に対処することができます。

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

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

例外処理をする際に、以下のポイントを守ると読みやすく、メンテナンスしやすいコードになります。

  • catchでは何の例外か明示的に書く(例:catch (IOException e)
  • Exceptionの親クラスではなく、具体的なクラスでcatchする
  • 例外のログを出力して原因を残す
  • 意味のあるメッセージを表示する

例外処理は、「発生しそうなこと」に備えて書く予防線のようなものです。最初は難しく感じるかもしれませんが、慣れてくると安定したプログラムを作るためには欠かせない技術になります。

7. 自作の例外を作ることもできる

7. 自作の例外を作ることもできる
7. 自作の例外を作ることもできる

Javaでは、独自の例外クラスを作って、開発者が意図したエラーを明示的に扱うこともできます。


public class MyCustomException extends Exception {
    public MyCustomException(String message) {
        super(message);
    }
}

自作例外を使えば、アプリケーション固有の問題を明確に区別でき、より柔軟なエラーハンドリングが可能になります。

8. finallyブロックで後始末をしよう

8. finallyブロックで後始末をしよう
8. finallyブロックで後始末をしよう

Javaでは、finallyブロックを使って、例外の有無にかかわらず、最後に必ず実行したい処理を書くことができます。

例えば、ファイルを開いたら、必ず閉じる処理をfinallyで書くのが一般的です。


try {
    // ファイルを開く処理
} catch (IOException e) {
    // エラー処理
} finally {
    // ファイルを閉じる処理
}

まとめ

まとめ
まとめ

Javaの例外処理は、プログラムの安定性を高めるために欠かせない重要な仕組みであり、エラーとの違いを正しく理解することで、初心者でもより安全なコードを書くことができるようになります。今回の記事で取り上げたように、例外にはチェック例外と非チェック例外があり、それぞれ扱い方や発生タイミングが異なります。また、try-catch構文を使って例外をキャッチし、適切に処理することで、プログラムが予期せず止まることを防ぐことができます。 Javaでは、ファイル操作やネットワーク通信のように失敗しやすい処理が多く存在するため、例外処理は避けて通れません。例外が発生する可能性を理解し、具体的な例外クラスを使ってcatchすることで、より詳細なエラー対応ができるようになり、原因の特定や再発防止につながります。また、ログを残したり、ユーザーに意味のあるメッセージを返すことも、例外処理の大切な役割のひとつです。 さらに、ErrorとExceptionの違いを理解しておくことで、開発者が対応すべき問題と、システムレベルで対処すべき重大な問題を区別できるようになります。エラーは基本的に回復不能である一方、例外は適切に処理することでプログラムの継続が可能です。この違いを知らないと、不適切な例外キャッチによって問題を隠してしまい、原因の究明が困難になることもあります。 例外処理を学ぶうえでは、実際にコードを書いて動きを観察することが非常に効果的です。そこで、例外の種類を識別して処理する簡単なサンプルコードを以下に示します。これは初心者が例外の動作を理解しやすいように構成された例であり、複数の例外をどのようにcatchするかを知る良いきっかけになります。


public class MultiExceptionSample {
    public static void main(String[] args) {
        try {
            String text = null;
            System.out.println(text.length());
            int value = Integer.parseInt("abc");
            System.out.println(value);
        } catch (NullPointerException e) {
            System.out.println("ヌルのままアクセスしようとしました!");
        } catch (NumberFormatException e) {
            System.out.println("文字列を数値に変換できませんでした!");
        } catch (Exception e) {
            System.out.println("予期しない例外が発生しました:" + e.getMessage());
        } finally {
            System.out.println("処理を終了します。");
        }
    }
}

ヌルのままアクセスしようとしました!
処理を終了します。

このサンプルからも分かるように、複数の例外を順番にcatchすることで、想定される問題ごとに適切なメッセージや処理を行うことができます。例外ごとに異なる対応を行えるため、プログラムの信頼性が大きく向上し、ユーザーにもわかりやすい動作を提供できます。例外は「発生しないことが理想」ではありますが、「発生したときにどう扱うか」がプログラミングにおいて非常に重要です。例外処理を正しく使いこなすことで、より堅牢なアプリケーション開発が可能となり、将来的には大規模な開発にも対応できる確かな力となります。 また、自作例外クラスを利用すれば、システム特有のエラーを明確に識別できるため、規模の大きなプロジェクトでも一貫したエラー管理が実現できます。finallyブロックの活用も、リソースの解放や終了処理を確実に行うためにとても重要な位置づけです。例外処理は学べば学ぶほど奥が深く、Javaにおける基礎でありながら高度な技術へとつながる重要なテーマでもあります。

先生と生徒の振り返り会話

生徒

「先生、例外ってただのエラーだと思っていましたが、種類があって対処方法も違うんですね!」

先生

「その通りです。ExceptionとErrorの違いを知ることで、どれが対処可能で、どれが危険なのか判断できるようになります。」

生徒

「自作の例外クラスを作れるのも驚きでした!アプリケーションごとの専用エラーを作れるんですね。」

先生

「そうです。規模が大きくなればなるほど、自作例外は役に立ちますよ。例外処理の設計は品質に直結しますからね。」

生徒

「今日のまとめで例外処理がとても大事だと分かりました!これからは例外が出ても慌てず対応できそうです!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Javaの例外(Exception)とは具体的にどのような状態を指すのですか?

Javaの例外とは、プログラムの実行中に発生する「想定外のトラブル」や「予期せぬ事態」のことを指します。コードの書き間違いである文法エラーとは異なり、プログラム自体は正しく記述されていても、外部要因や実行時の状況によって発生する問題です。例えば、読み込もうとしたファイルが削除されていたり、ネットワーク接続が突然切断されたり、数字を入力すべき場所にユーザーが誤って文字を入力したりする場合が該当します。Javaではこれらのトラブルが発生すると「例外という信号」が投げられ、適切に処理しないとプログラムがその場で強制終了してしまいます。
Javaの例外処理の一覧へ
新着記事
Python
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに解説
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに徹底解説
Dart
Dartのクラスの作り方!定義・インスタンス生成の基礎
Dartのクラスの作り方を完全解説!初心者でも理解できるクラス定義とインスタンス生成の基礎
Java
Javaの同一性と同値性
Javaの同一性と同値性をわかりやすく解説!初心者向けの基礎知識
AWS
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
人気記事
Java
Java の Random クラスを使ってランダムな数値を生成する方法
JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成
Java
Java の getter メソッドと setter メソッドの使い方
Javaのgetterメソッドとsetterメソッドの使い方を完全ガイド!初心者でもわかるアクセス方法
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
AWS
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで

🔌 USBポート不足を解消

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

UGREEN USB-Cハブを見る

※ Amazon広告リンク