この例外は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 について、対応方法を紹介しました。ゼロ除算は分母が変数の場合に発生することが多いので、この例外が発生した場合は「何故その分母の変数がゼロになったのか」にも注目して調査してください。