VB.NETの例外処理を完全ガイド!初心者でもわかるSystem.Exceptionの仕組み
生徒
「VB.NETでプログラムを動かしたら、急に英語のエラーが出て止まってしまいました…これは何ですか?」
先生
「それは例外(れいがい)と呼ばれるものです。VB.NETでは、エラーが起きたときの仕組みがきちんと用意されています。」
生徒
「例外ってエラーと同じなんですか?パソコンを触ったこともなくて…」
先生
「大丈夫です。例外の考え方やSystem.Exceptionの仕組みを、身近なたとえで説明していきましょう。」
1. 例外処理とは?VB.NET初心者向けの超基本
VB.NETの例外処理とは、プログラムの実行中に予想外のトラブルが起きたときに、プログラムが突然止まらないようにする仕組みです。 たとえば、パソコンで電卓を使っていて「0で割り算」をしようとすると、計算できずに困りますよね。 VB.NETでも同じで、計算できない・ファイルが見つからない・文字を数字として使おうとした、などの場面で例外(Exception)が発生します。
例外は「危険を知らせるアラーム」のようなものです。VB.NETでは、そのアラームを受け取って、どう対応するかを書いてあげることができます。
2. System.Exceptionとは何か?例外の親クラス
VB.NETの例外処理の中心にあるのがSystem.Exceptionです。 これは「すべての例外の親(おや)」にあたる存在です。
パソコンに例えると、System.Exceptionは「すべてのエラーメッセージが入る大きな箱」です。 細かいエラーも、最終的にはこの箱に入ってきます。
VB.NETでは、エラーが起きると必ずSystem.Exception、またはそれを元にした例外オブジェクトが作られます。 この仕組みを例外階層と呼びます。
3. 例外階層の考え方を図書館でたとえる
例外階層とは、「例外が親子関係で整理されている構造」のことです。 図書館で考えてみましょう。
一番大きな分類が「本」。その下に「小説」「参考書」があり、さらに「数学の参考書」「英語の参考書」と細かく分かれます。
VB.NETでも同じで、一番上がSystem.Exception。 その下に、System.IO.IOException(ファイル関係の例外)やSystem.FormatException(文字の形式エラー)などがあります。
どんな例外でも「これは例外ですよ」と共通して扱えるのが、System.Exceptionの便利なところです。
4. VB.NETで例外が発生するシンプルな例
ここでは、実際にVB.NETで例外が発生する簡単なコードを見てみましょう。 パソコン初心者の方は「こういうときに止まるんだな」と感じてもらえれば大丈夫です。
Module Module1
Sub Main()
Dim x As Integer = 10
Dim y As Integer = 0
Console.WriteLine(x \ y)
End Sub
End Module
このプログラムは「10を0で割る」ため、実行すると例外が発生します。 0で割り算はできない、というルール違反を知らせてくれているのです。
5. System.Exceptionが持っている基本的な情報
System.Exceptionには、エラーの内容を知るための情報が入っています。 代表的なものを初心者向けに説明します。
- Message:何が起きたのかを文章で教えてくれる
- StackTrace:どこで問題が起きたかの履歴
たとえばMessageは、パソコンが「ここで失敗しましたよ」と日本語や英語で説明してくれるメモのようなものです。
Try
Dim n As Integer = Integer.Parse("abc")
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
入力文字列の形式が正しくありません。
このように、System.Exceptionを使うと、エラー内容を人間が理解しやすい形で確認できます。
6. よく使われる代表的な例外クラス
VB.NETには、よくあるトラブルごとに専用の例外クラスが用意されています。 すべてSystem.Exceptionの子どもです。
- FormatException:文字を数字に変換できないとき
- DivideByZeroException:0で割り算したとき
- IOException:ファイル操作で問題が起きたとき
「どんな失敗なのか」をクラスで分けているので、プログラム側で判断しやすくなっています。
7. すべての例外をSystem.Exceptionで受け取る意味
VB.NETでは、細かい例外を知らなくても、System.Exceptionひとつでまとめて受け取ることができます。
Try
Console.WriteLine("処理開始")
Dim a As Integer = 5
Dim b As Integer = 0
Console.WriteLine(a \ b)
Catch ex As System.Exception
Console.WriteLine("エラーが発生しました")
End Try
これは「どんなエラーでもいいから、とにかく止まらずに対応する」という考え方です。 初心者のうちは、この書き方を理解するだけで十分です。
8. 例外階層を知ると何がうれしいのか
例外階層とSystem.Exceptionの仕組みを知ると、VB.NETのエラーメッセージが怖くなくなります。
「パソコンが壊れた」のではなく、「プログラムが困って助けを求めている」と考えられるようになります。
VB.NETの例外処理は、初心者から上級者まで必ず使う重要な基礎です。 System.Exceptionは、その中心にある存在だと覚えておきましょう。