カテゴリ: VB.NET 更新日: 2026/01/16

VB.NETのエラーコードと例外処理を組み合わせる設計方法!初心者向け完全解説

VB.NETでエラーコードと例外処理を組み合わせる設計方法
VB.NETでエラーコードと例外処理を組み合わせる設計方法

先生と生徒の会話形式で理解しよう

生徒

「VB.NETでエラーが起きた時、プログラムを止めずに、何が原因か数字や記号で管理する方法はありますか?」

先生

「ありますよ!『例外処理』でエラーを捕まえて、それを『エラーコード』として整理してあげる設計にすると、とても分かりやすくなります。」

生徒

「エラーコードって、家電の故障で出てくる『E-01』みたいなものですか?」

先生

「その通りです!エラーの種類を番号にすることで、どこで何が起きたか特定しやすくなるんです。具体的な設計方法を学んでいきましょう!」

1. エラーコードと例外処理の役割とは?

1. エラーコードと例外処理の役割とは?
1. エラーコードと例外処理の役割とは?

VB.NETの例外処理(れいがいしょり)とは、プログラムの実行中に発生する予想外のトラブル(例外)を安全に受け止める仕組みです。例えば、インターネットが繋がっていない、読み込もうとしたファイルがない、といった時にプログラムがパニックを起こして強制終了しないようにガードを固めます。

一方でエラーコードとは、発生したトラブルに「番号」や「名前」を付けて管理する手法です。プログラミング未経験の方には、「病院の受付」をイメージしてもらうと分かりやすいでしょう。具合が悪くなって病院へ行く(例外発生)と、受付で症状に合わせて「内科は1番、外科は2番の窓口へ」と案内されますよね。この番号がエラーコードです。これらを組み合わせることで、「どこで」「どんな問題が」起きたのかを、後から誰が見ても一目で分かるように整理するのが、今回の設計方法の目的です。

2. なぜ例外処理にエラーコードを混ぜるのか

2. なぜ例外処理にエラーコードを混ぜるのか
2. なぜ例外処理にエラーコードを混ぜるのか

例外処理(Try-Catch)だけでもエラーは防げますが、規模が大きくなると「結局どこでエラーが出たのか分からない」という問題が起きます。VB.NETが自動で出してくれるエラーメッセージは英語だったり、非常に難解だったりすることが多いからです。アプリケーション開発において、ユーザーに「不明なエラーです」と表示するのと、「エラーコード:E-102(ファイルが見つかりません)」と表示するのでは、親切さが全く違います。

また、システムを修理する担当者(エンジニア)にとっても、番号があれば「102番なら、あそこの設定を確認すればいいな」とすぐに分かります。このように、プログラムを壊れにくくするだけでなく、修理やメンテナンスをしやすくするために、例外処理の中にエラーコードを組み込む設計が推奨されているのです。これは例外処理を一段階上のレベルで使いこなすための大切な考え方です。

3. エラーコードを管理するための列挙型(Enum)

3. エラーコードを管理するための列挙型(Enum)
3. エラーコードを管理するための列挙型(Enum)

エラーコードをバラバラな数字(1、2、3...)で書くと、後で「3番って何だったっけ?」と混乱してしまいます。そこで、VB.NETではEnum(列挙型:れっきょがた)という機能を使って、数字に分かりやすい名前を付けて管理します。

列挙型とは、関連する「名前」と「数字」をセットにしてまとめたリストのことです。パソコンのキーボードを触ったことがない人でも、「メニュー表」をイメージしてください。「Aセット=ハンバーガー」のように、名前と中身が紐付いているので、間違いが少なくなります。まずは、このエラーコードのリスト(Enum)を作成することから設計が始まります。


' エラーコードの種類を定義するリスト(Enum)
Public Enum AppErrorCode
    None = 0            ' 正常終了
    FileNotFound = 101  ' ファイルが存在しない
    AccessDenied = 102  ' アクセス権限がない
    DatabaseError = 501 ' データベースの接続失敗
    UnknownError = 999  ' 予期せぬエラー
End Enum

4. 自作の例外クラスを作って情報を運ぶ

4. 自作の例外クラスを作って情報を運ぶ
4. 自作の例外クラスを作って情報を運ぶ

標準の例外処理では「エラーメッセージ」しか運べませんが、もっと多くの情報を運びたい時は、自分で「エラー専用の運び屋さん(自作例外クラス)」を作ります。この運び屋さんに「エラーコード」という荷物を持たせるのです。

これをカスタム例外と呼びます。専門用語で「継承(けいしょう)」という仕組みを使い、VB.NETの標準的なエラーの性質を受け継ぎつつ、エラーコードという新しい機能を追加します。これにより、エラーが発生した瞬間に、どの番号のエラーコードを出すべきかを一緒に投げることができるようになります。オブジェクト指向の基本的な活用例でもあります。


' 自作のエラー運び屋さんクラス
Public Class MyAppException
    Inherits Exception ' 標準の例外の性質を引き継ぐ

    ' エラーコードを保存しておくための変数
    Public Property ErrorCode As AppErrorCode

    ' クラスを作る時の設定(コンストラクタ)
    Public Sub New(code As AppErrorCode, message As String)
        MyBase.New(message) ' 親であるExceptionにメッセージを渡す
        Me.ErrorCode = code  ' このクラスのErrorCodeに番号をセットする
    End Sub
End Class

5. Try-Catchとエラーコードの組み合わせ実践

5. Try-Catchとエラーコードの組み合わせ実践
5. Try-Catchとエラーコードの組み合わせ実践

準備ができたら、実際にプログラムの中で使ってみましょう。処理の中で問題を見つけたら Throw(スロウ:投げる) という命令を使って、先ほど作った運び屋さん(自作例外クラス)にエラーコードを乗せて投げます。それを、一番外側の Catch で受け止めて処理をします。

この制御構造により、プログラムの深いところで起きたエラーを、安全な場所まで運んできてから、ユーザーに見せるメッセージを作ることができます。これが、プロが使うエラーハンドリングの基本的な流れです。初心者の方は、まずこの「投げて、捕まえる」のリズムを覚えましょう。


Module Module1
    Sub Main()
        Try
            ' 何か作業を開始する
            ReadMyFile("C:\dummy.txt")

        Catch ex As MyAppException
            ' 自作のエラーを捕まえた時の処理
            Console.WriteLine("【システム通知】")
            Console.WriteLine("エラー番号:" & ex.ErrorCode.ToString())
            Console.WriteLine("メッセージ:" & ex.Message)

        Catch ex As Exception
            ' それ以外の全く予想外のエラー
            Console.WriteLine("予期せぬ重大なエラーが発生しました。")
        End Try
        
        Console.ReadLine() ' 画面を止めおくための命令
    End Sub

    Sub ReadMyFile(path As String)
        ' もしファイルがなかったら、エラーコード101番を乗せて投げる
        If Not System.IO.File.Exists(path) Then
            Throw New MyAppException(AppErrorCode.FileNotFound, "指定されたファイルが見つかりません。")
        End If
    End Sub
End Module

6. メッセージ管理テーブルを作成して分かりやすく

6. メッセージ管理テーブルを作成して分かりやすく
6. メッセージ管理テーブルを作成して分かりやすく

エラーコードの設計でさらに一工夫するとすれば、コード番号に対応する「日本語の説明文」を別の場所にまとめておくことです。コードの中に直接メッセージを書くと、後で「やっぱりこの言い回しを変えたいな」と思った時に、全部のプログラムを探して直すのが大変だからです。

エラーコードをキー(鍵)にして、対応する説明文を取り出す仕組みを作ることで、メンテナンス性(後から直しやすさ)が劇的に向上します。例えば、データベースや設定ファイル、あるいは Select Case 文を使って、一覧表のように管理します。これにより、多言語対応(日本語以外の表示)なども簡単に行えるようになります。これは実務のVB.NET開発でも非常によく使われるテクニックです。

7. エラーログの記録とエラーコード

7. エラーログの記録とエラーコード
7. エラーログの記録とエラーコード

エラーコードは、ユーザーに見せるためだけでなく、ログ(記録)を残す際にも力を発揮します。プログラムが動いている裏側で、こっそりノートに「何時何分にエラー101が発生した」と書き残しておくのです。これがログ記録です。

後でアプリがうまく動かないという報告を受けたとき、そのノートを見れば一目瞭然です。エラーコードがあるおかげで、膨大な記録の中から目的の情報を検索しやすくなります。「101」という数字で検索するだけで、ファイル関連のトラブルがいつ起きたのかが全て分かるのです。パソコン操作に慣れていない方でも、日記にタイトルを付けておくようなものだと思えば、その便利さが伝わるはずです。デバッグ(間違い探し)の時間を短縮するための重要な知恵です。

8. エラーコード設計の注意点とコツ

8. エラーコード設計の注意点とコツ
8. エラーコード設計の注意点とコツ

最後に、エラーコードを作る時の注意点をいくつか紹介します。まず、番号には規則性を持たせましょう。100番台はファイル、500番台は通信、といった具合です。これをバラバラにすると、せっかくのエラーコードが逆に混乱の元になってしまいます。システム設計において、ルールの統一は最も大切です。

また、何でもかんでもエラーコードにする必要はありません。入力欄が空っぽといった、その場ですぐに直せる小さなミスは If文 で優しく促せば十分です。エラーコードは、プログラムの処理が途中で続けられなくなった時の「最終手段」として使うのがスマートです。このバランス感覚を磨くことが、優れたエンジニアへの近道です。最初は難しく感じるかもしれませんが、少しずつ自分のプログラムに組み込んで、その便利さを体感してみてください!

カテゴリの一覧へ
新着記事
New1
ASP.NET
ASP.NET WebFormsセキュリティ対策の基本!初心者でもできる安全なサイト作り
New2
VB.NET
VB.NETのエラーコードと例外処理を組み合わせる設計方法!初心者向け完全解説
New3
VB.NET
VB.NETのFor Eachループを完全マスター!初心者でもわかるコレクション処理の基本
New4
ASP.NET
ASP.NET WebFormsパフォーマンス改善の秘訣!高速なウェブサイトを作る方法
人気記事
No.1
Java&Spring記事人気No1
VB.NET
VB.NETの配列(Array)の作り方と基本操作を徹底解説!初心者でもわかる入門ガイド
No.2
Java&Spring記事人気No2
VB.NET
VB.NETの例外処理とUsingステートメントを徹底解説!エラーに強いプログラム作り
No.3
Java&Spring記事人気No3
VB.NET
VB.NETの非同期処理と例外処理を完全ガイド!Async/Awaitのエラー対策
No.4
Java&Spring記事人気No4
VB.NET
VB.NETのコンストラクタと初期化処理の書き方を初心者向けに解説
No.5
Java&Spring記事人気No5
VB.NET
VB.NETのSelect Case文を徹底解説!初心者でもわかる分岐処理の基本と応用例
No.6
Java&Spring記事人気No6
ASP.NET
ASP.NET MVCでビュー(Razor)を使った画面表示の基本を初心者向けに解説
No.7
Java&Spring記事人気No7
VB.NET
VB.NETのBoolean型(True/False)の使い方と条件分岐での活用方法を徹底解説!初心者でも理解できる基本
No.8
Java&Spring記事人気No8
ASP.NET
ASP.NETとは?初心者向けにできることと特徴をやさしく解説