C#基本

[C#] 算術演算のオーバーフロー時に例外を発生させる

C#の算術演算では桁数のオーバーフローが起こっても例外は発生しませんが、
これを発生させる方法です。

サンプル

例1)桁数オーバーフローが発生しても例外が発生しない例


//intの最大値を設定して表示する
int i = int.MaxValue;
Console.WriteLine(i);

//加算する(オーバーフローさせる)
i++;

//値を表示する
Console.WriteLine(i);

結果

2147483647
-2147483648

桁数オーバーフロー時に例外を発生させるには、該当箇所を checked句で囲います。

例2)桁数オーバーフロー発生時に例外を発生させる例


checked
{
  //intの最大値を設定して表示する
  int i = int.MaxValue;
  Console.WriteLine(i);

  //加算する(オーバーフローさせる)
  i++;

  //値を表示する
  Console.WriteLine(i);
}

結果

2147483647
例外がスローされました: 'System.OverflowException'

備考

  • checked句を使用すると、オーバーフロー時にSystem.OverflowExceptionが発生します。
  • 発生した例外はtry~catch句で捕捉できます。
  • 浮動小数点型(float、double)の場合は、checked句内でオーバーフローしても例外は発生しません。

関連記事

-C#基本
-,