カテゴリ: Java 更新日: 2025/12/23

JavaのArithmeticExceptionを完全解説!初心者でも理解できる算術エラー処理の基本

ArithmeticExceptionクラス
ArithmeticExceptionクラス

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

生徒

「Javaで数字を扱うときに突然エラーが出て止まってしまうことがあるんですが、どうすればいいんですか?」

先生

「それはArithmeticExceptionという算術演算で発生する例外かもしれません。特にゼロで割ろうとすると必ず起こりますよ。」

生徒

「ゼロで割るとエラーになるんですね。具体的にどうやって対処すればいいんですか?」

先生

「それでは、Javaのjava.langパッケージに含まれるArithmeticExceptionクラスについて基本から解説していきましょう。」

1. java.langパッケージとは

1. java.langパッケージとは
1. java.langパッケージとは

Javaのプログラムを書くときに欠かせないのがjava.langパッケージです。このパッケージにはStringMathObjectといった基本クラスが含まれており、開発者が特別にインポートしなくても自動で使えるようになっています。そのため初心者でも安心してプログラムを組める仕組みが整っています。

今回取り上げるArithmeticExceptionもこのjava.langに含まれており、数値演算中のエラーを表現する重要なクラスの一つです。

2. ArithmeticExceptionとは

2. ArithmeticExceptionとは
2. ArithmeticExceptionとは

ArithmeticExceptionはJavaの算術演算で発生する例外クラスです。特にゼロ除算、つまり割り算の分母にゼロを指定したときに自動的にスローされます。プログラムがこの例外に遭遇すると通常の処理は中断され、キャッチされない場合はエラーメッセージを表示して終了してしまいます。

数値演算を行うプログラムでは頻繁に発生する可能性があるため、必ず理解しておきたい基本的な例外です。

3. ArithmeticExceptionが発生する例

3. ArithmeticExceptionが発生する例
3. ArithmeticExceptionが発生する例

まずは簡単なサンプルコードで、どのように例外が発生するかを確認してみましょう。


public class ArithmeticExceptionExample {
    public static void main(String[] args) {
        int a = 10;
        int b = 0;
        int result = a / b; // ゼロ除算で例外発生
        System.out.println("計算結果: " + result);
    }
}

Exception in thread "main" java.lang.ArithmeticException: / by zero
    at ArithmeticExceptionExample.main(ArithmeticExceptionExample.java:6)

このように、ゼロで割った瞬間にArithmeticExceptionが発生し、プログラムは強制終了してしまいます。これを防ぐためには例外処理が必要になります。

4. ArithmeticExceptionをtry-catchで処理する

4. ArithmeticExceptionをtry-catchで処理する
4. ArithmeticExceptionをtry-catchで処理する

Javaではtry-catch構文を使うことで、例外が発生してもプログラムを停止させずに処理を続けることができます。次の例を見てみましょう。


public class HandleArithmeticException {
    public static void main(String[] args) {
        int a = 10;
        int b = 0;
        try {
            int result = a / b;
            System.out.println("計算結果: " + result);
        } catch (ArithmeticException e) {
            System.out.println("算術エラーが発生しました: " + e.getMessage());
        }
        System.out.println("処理は継続されます。");
    }
}

算術エラーが発生しました: / by zero
処理は継続されます。

このようにcatchブロックで例外を補足すれば、プログラムが強制終了せずに後続処理を安全に続けることができます。

5. ArithmeticExceptionを回避する方法

5. ArithmeticExceptionを回避する方法
5. ArithmeticExceptionを回避する方法

例外処理を使うのも重要ですが、そもそも例外を発生させない工夫も大切です。ゼロ除算を避けるために分母がゼロでないかを事前にチェックする方法があります。


public class PreventArithmeticException {
    public static void main(String[] args) {
        int a = 10;
        int b = 0;
        if (b != 0) {
            int result = a / b;
            System.out.println("計算結果: " + result);
        } else {
            System.out.println("分母がゼロなので計算できません。");
        }
    }
}

分母がゼロなので計算できません。

こうすることで、例外を未然に防ぎ、ユーザーにわかりやすいメッセージを表示することが可能になります。現実的な開発現場でもこのようなチェックは頻繁に行われます。

6. ArithmeticExceptionと他の例外の違い

6. ArithmeticExceptionと他の例外の違い
6. ArithmeticExceptionと他の例外の違い

ArithmeticExceptionはRuntimeExceptionを継承しているため非チェック例外に分類されます。つまり、コード上で必ずしもtry-catchを記述しなくてもコンパイルエラーにはなりません。これに対してIOExceptionなどのチェック例外は必ず処理を記述しなければなりません。

この違いを理解しておくと、プログラム設計の際にどの例外を明示的に扱う必要があるのかがわかりやすくなります。

7. 実務でのArithmeticException対策

7. 実務でのArithmeticException対策
7. 実務でのArithmeticException対策

実際の開発現場では、ユーザーが入力した値や外部システムから取得したデータを計算に利用することが多く、想定外のゼロ除算が発生する可能性があります。そのため入力チェックやバリデーションを行い、例外が起こらないようにすることが基本です。

さらに、エラーが発生した場合にはログに記録し、ユーザーにはわかりやすいエラーメッセージを表示するのが良い設計です。これによりシステムの安定性とユーザー体験が大幅に向上します。

カテゴリの一覧へ
新着記事
Springの@Transactional徹底解説!トランザクションの伝播・分離レベル・タイムアウトの基本
JavaのHashMapクラスgetメソッドの使い方を完全ガイド!初心者でもわかるjava.util入門
Thymeleafのth:fragmentを使ったテンプレートの再利用方法を完全ガイド!初心者でもわかる使い方
Javaの@PathVariableアノテーションの使い方を徹底解説!初心者でもわかるパスパラメータの基本と応用
人気記事
No.1
Java&Spring記事人気No1
Javaのラムダ式で配列を扱う!Arrays.streamの基本と注意点を初心者向けに解説
No.2
Java&Spring記事人気No2
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
No.3
Java&Spring記事人気No3
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.4
Java&Spring記事人気No4
JavaのIntegerクラスの使い方を完全ガイド!初心者でもわかる整数操作
No.5
Java&Spring記事人気No5
JavaのBigDecimalクラスcompareToメソッド完全ガイド!初心者でもわかる大小比較の基本
No.6
Java&Spring記事人気No6
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.7
Java&Spring記事人気No7
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.8
Java&Spring記事人気No8
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法