【C#】0 で除算しようとしました。の解決方法【System.DivideByZeroException:】

C#,エラー/例外

C#で発生するエラー(例外)
System.DivideByZeroException: 0 で除算しようとしました。

上記のエラー(例外)が発生したときの解決方法をご紹介します。


下記にC#で発生する例外処理の一覧をまとめていますので解決できない場合は合わせてご確認ください。
⇒例外処理クラス一覧まとめ【原因と解決方法】

C#のおすすめ講座を受講して、最短1週間でC#をマスターしよう!
⇒C#が学べるおすすめプログラミングスクール&オンライン講座11選


C# 0 で除算しようとしました。のエラー(例外)原因

「ハンドルされていない例外: System.DivideByZeroException: 0 で除算しようとしました。」のエラーの原因は
計算式の「割る数(除数)」が0になっていること
です。

エラーコードの例は下記の通りです。

int a = 0;
int b ;
// 0で除算するため例外が発生する。
b = 1 / a;
0 で除算しようとしました。のエラーイメージ

プログラムの計算式では、数値を0で割るのは絶対にNGです。
処理が無限ループに陥って停止したり、システムが除算の結果を定義できなかったりするためです。
「DivideByZeroException」の詳細はこちらから


C# 0 で除算しようとしましたエラーの解決方法

「ハンドルされていない例外: System.DivideByZeroException: 0 で除算しようとしました。」のエラーを解決する方法をご紹介します。

①「割る数(除数)」を0以外の値にする

int a = 1;
int b ;
// 除数を1にするとエラーが解消される
b = 1 / a;

原因が「0で割ってしまった事」なので、除数を0以外の値に修正すればエラーは解消されます。

②計算処理の前に割る数(除数)が0かどうか判定する

int a = 0;
int b ;
// 計算処理をする前に除数が1かどうか判定する。除数が0の時は処理を行わない。
if (a != 0)
{
    b = 1 / a;
}



③try-catch内に処理を記載し、例外をキャッチする

int a = 0;
int b ;
// 例外が発生したときにキャッチする
try
{
    b = 1 / a;
}
catch(Exception e)
{
    // エラーが発生したときの処理
}

上記3つが主な「System.DivideByZeroException: 0 で除算しようとしました。」の解決策です。


より良いコードを書くために

おすすめの対処法を3つ紹介しましたが、
一番良い対処法は「try-catch内に処理を記載し、例外をキャッチする」
です。


①の対応策だと、別の処理で除数の値が0に更新されると、エラーが発生するからです。
大規模なシステム開発などでバグが発生しやすい「変更に弱いコードです。


②の対応策も例外が発生した時にエラーの詳細が分からないため、おすすめできません。

③の対応策は0除算の例外が発生したときに、エラーの詳細を「Exception e」に格納できます
それにより、エラーの内容をプログラマーが確認できるため、システム開発の時にバグの特定が容易になります。エラーを解決する際は、システム開発の利便性を考え、③の対応策を選択することをおすすめします。




エラーを解決できなくて途方に暮れている人へ。

■無料プログラミング講座を開設しています!
下記にVisual Studioを使ったC#プログラミング初心者向け完全ガイドを掲載しています。

このガイドを一通り勉強すれば、C#プログラミングの基礎が学べます。
是非チャレンジしてみてください!

C#初心者向けに始め方ガイドを作成しています。
筆者

プログラミング初心者の方はぜひチャレンジしてみてください!!

C#,エラー/例外

Posted by 9noike