どうも!リョクちゃです。
今回は、除算エラーの中でも0除算エラーについてさらっと紹介していきます。
プログラムを組んでいて、数字を取り扱うエラーは多くあります。
その中でもまずは簡単に、0除算に関して、エラーのキャッチの仕方、
エラーが出てもアプリケーションの処理を止めない方法を簡単に伝授します。
ちなみに前回はこちら、
目次
0除算エラー
数値を除算する際に0で除算した時に発生するエラーのことを指します。
例)
10 / 0 = ?
この時にエラーが発生します。
※プログラムやExcelで行おうとしたときに発生します。
学生時代に算数で習ったときには、おそらく
10/ 0 の答えは、0であると習ったのではないでしょうか?
これに関しては、一昔前に9 ÷ 0 = 0というキーワードで
ネット上で議論が巻き起こっていたみたいです。
気になる方は、こちら
結論からいうと、 10 / 0 = 0ではなく、計算ができないというのが、
一応の正解となるそうです。
これに関しては、個人が何が正しいのかを取捨する必要があると思いますので、
個人がそれぞれの正解を頭の片隅に思っておけば、良いと思います。
さて、話は脱線しましたが、
プログラムでは、10 / 0 の答えは除算エラーになります。
エラーをつかむ
実際に除算エラーを起こしてみると、コードでは下のようになります。
1 2 3 4 5 6 |
Dim a As Integer = 10 Dim b As Integer = 0 Dim result As Double result = a / 0 Console.WriteLine(result) |
実行してみると……
あれ?
お気づきになられたでしょうか?
エラーが出ずに、すんなりと通ってしまいました。
実際にresultに代入された答えを確認してみると……
Infinity……インフィニティ
つまり∞という結果になってしまいます。
エラーにならないじゃん?!
これに関して、調べてみました。
VB.Netで0除算エラーを起こすには?
結論から言うと、エラーを起こすには、Integer型で分子と分母を宣言するのではなく、
Decimal型で分子と分母を宣言する必要があるみたいです。
気を取り直して、調べた結果を参考にコードを書いてみます。
1 2 3 4 5 6 |
Dim a As Decimal = 10 Dim b As Decimal = 0 Dim result As Double result = a / 0 Console.WriteLine(result) |
これを実行すると、
エラーが発生しました。
内容としては、
というエラーが出て、0除算エラーが起きたのが確認できました。
このままではここで処理が止まってしまい、これ以降
何もできなくなってしまいます。
これをエラーをキャッチして、回避する方法を以降で触れていきます。
エラーをキャッチする
エラーの内容をキャッチするには、
Try~Catch~End Tryという例外処理の書き方をコード上に組み込みます。
書き方としては以下のようになります。
1 2 3 4 5 6 |
Try ' エラーが起きる処理をここに書く Catch ex As エラーの種類を書く ' エラーが起きた後の処理を書く End Try |
Tryブロックでは、エラーが起きる処理を書きます。
Catchブロックでは、エラーが起きた後の処理を書きます。
この際に、Catch ex As エラーの種類の種類には、
Tryブロックの処理で起きうるであろうエラーの種類を書きます。
エラーの種類がわからなければ、
という風に書きます。
0除算エラーの場合
と書くことで、0除算エラーのみをキャッチすることができます。
ただし、他のエラーの場合はキャッチすることができないので、
他のエラーをキャッチしたい場合は、Catchブロックを更に作ります。
例えば、下のように
1 2 3 4 5 6 7 |
Try ' エラーが起きる処理をここに書く Catch ex As エラー① ' エラー①が起きた後の処理を書く Catch ex As エラー② ' エラー②が起きた後の処理を書く End Try |
と、このような感じでエラーをキャッチして、エラー毎に何をさせたいか
後は処理を書いてあげれば、アプリケーションを途中で止めずに
処理を継続させることができます。
まとめ
0除算エラーをきっかけにエラーのキャッチの仕方を紹介していきました。
エラーをキャッチすることで、エラー毎に行わせたい処理を
書けるので活用してみてください。
エラーをキャッチするには
これさえ覚えておけば、エラー(例外)に関する処理を組むことができます。
プログラミングを学んでみたいなら、こちら
全国50都市で開催したプログラミング講座がオンライン・無料開催【テックジム】
最後までお読みいただき、ありがとうございます。
・こちらの書籍を参考にVB.Net勉強しています。