【C#】System.DivideByZeroException: 0 で除算しようとしました

C#

この例外は0で除算を行った際に発生します。この記事では、この例外がどのように発生するかの例を示し、それを避けるための処置方法を説明します。

ゼロ除算とは

0で除算しようとするとエラーが発生するのは、そのような操作が数学的に無意味であり、結果が定義されていないためです。コンピュータは数学のルールに従って動作するため、この原則に反する操作を試みるとエラーを報告します。

例外が発生する例

このコードは、2つの数値の除算を行いますが、除数が0となっており、その際にSystem.DivideByZeroExceptionが発生します。

using System;

class Program
{
    static void Main()
    {
        int numerator = 10; // 分子
        int denominator = 0; // 除数、ここで0を設定します。

        // 除算を実行します。
        int result = numerator / denominator; // ここで例外が発生します。

        Console.WriteLine("結果: " + result);
    }
}

対応方法1:除算をする前にチェックする

除算の前に除数が0でないことを確認することで、例外の発生を防いだり、入力値の誤りを表示することができます。

using System;

class Program
{
    static void Main()
    {
        int numerator = 10; // 分子
        int denominator = 0; // 除数

        // 除数が0でないことを確認します。
        if (denominator != 0)
        {
            // 除数が0でなければ、安全に除算を行います。
            int result = numerator / denominator; // 除算を実行

            Console.WriteLine("結果: " + result);
        }
        else
        {
            // 除数が0の場合は、エラーメッセージを表示します。
            Console.WriteLine("エラー: 0で除算することはできません。");
        }
    }
}

対応方法2:例外をキャッチする

もう一つの方法は、try~catchを使い、catch内に例外発生時の処置を記述します。

using System;

class Program
{
    static void Main()
    {
        int numerator = 10; // 分子
        int denominator = 0; // 除数

        try
        {
            // 除算を試みます。
            int result = numerator / denominator; // この計算で例外が発生する可能性があります。

            Console.WriteLine("結果: " + result);
        }
        catch (DivideByZeroException ex) // DivideByZeroExceptionを特定してキャッチします。
        {
            Console.WriteLine("エラーが発生しました: " + ex.Message);
        }
    }
}

まとめ

本記事では、ゼロ除算により発生する例外 System.DivideByZeroException について、対応方法を紹介しました。ゼロ除算は分母が変数の場合に発生することが多いので、この例外が発生した場合は「何故その分母の変数がゼロになったのか」にも注目して調査してください。

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