カテゴリ: C# 更新日: 2025/12/31

C#で例外情報を取得する方法!Exception.MessageとStackTraceを解説

C#で例外情報を取得する方法!Exception.MessageとStackTrace
C#で例外情報を取得する方法!Exception.MessageとStackTrace

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

生徒

「C#でプログラムを動かしたらエラーが出たんですけど、どうやって詳しい情報を確認できますか?」

先生

「C#では、エラー(例外)が起きたときにExceptionという特別な情報が手に入ります。特に、MessageStackTraceを使えば原因を調べられますよ。」

生徒

「MessageとStackTraceって具体的にどういうものなんですか?」

先生

「それでは、初心者向けにわかりやすく解説していきましょう!」

1. C#の例外とExceptionとは?

1. C#の例外とExceptionとは?
1. C#の例外とExceptionとは?

まず「例外(Exception)」とは、プログラムを実行している途中で思わぬエラーが発生したときの仕組みのことです。たとえば、数字を0で割ろうとすると「0で割れません」というエラーが出ます。これをC#では「例外が発生した」と表現します。

エラーが起きると、C#は自動的にExceptionクラスの情報を作ってくれます。その情報の中には、「どんなエラーなのか」「どの場所で発生したのか」といった詳細が入っており、プログラマーはこれを利用して原因を調べます。

2. Exception.Messageでエラー内容を確認する

2. Exception.Messageでエラー内容を確認する
2. Exception.Messageでエラー内容を確認する

Exception.Messageは、エラーが起きた理由を簡潔な文章で教えてくれるプロパティです。例えば「0で割れません」「指定したファイルが見つかりません」といった形で表示されます。

例として、0で割る処理をしてみましょう。


try
{
    int x = 10;
    int y = 0;
    int result = x / y; // ここでエラー
}
catch (Exception ex)
{
    Console.WriteLine("エラー内容: " + ex.Message);
}

実行すると、次のような出力が得られます。


エラー内容: Attempted to divide by zero.

このようにMessageを見れば、何が問題なのかを人間が理解できる形で確認できます。

3. Exception.StackTraceでエラーの場所を確認する

3. Exception.StackTraceでエラーの場所を確認する
3. Exception.StackTraceでエラーの場所を確認する

次にException.StackTraceです。これは、エラーが「プログラムのどの部分で発生したか」を詳しく教えてくれる情報です。スタックトレースとは、プログラムが実行された履歴のことを指します。

例を見てみましょう。


try
{
    int[] numbers = { 1, 2, 3 };
    Console.WriteLine(numbers[5]); // 存在しない要素にアクセス
}
catch (Exception ex)
{
    Console.WriteLine("エラー内容: " + ex.Message);
    Console.WriteLine("エラーの場所: " + ex.StackTrace);
}

実行結果は次のようになります。


エラー内容: Index was outside the bounds of the array.
エラーの場所:    at Program.Main(String[] args) in C:\Users\...\Program.cs:line 8

StackTraceを使うと、どのファイルの何行目でエラーが起きたのかが分かります。これによって、プログラムの修正がとてもスムーズになります。

4. MessageとStackTraceを組み合わせて使う

4. MessageとStackTraceを組み合わせて使う
4. MessageとStackTraceを組み合わせて使う

実際の開発では、Messageだけでは「何が起きたか」しかわかりません。しかし、StackTraceと組み合わせることで「どこで起きたのか」まで把握できます。両方をセットで使うことで、初心者でも効率よくエラーの原因を見つけられるようになります。


try
{
    string text = null;
    Console.WriteLine(text.Length); // null参照のエラー
}
catch (Exception ex)
{
    Console.WriteLine("エラー内容: " + ex.Message);
    Console.WriteLine("エラーの場所: " + ex.StackTrace);
}

5. 初心者でも理解しやすい例え

5. 初心者でも理解しやすい例え
5. 初心者でも理解しやすい例え

例外情報を日常生活に例えると、Messageは「エラーの短い説明」で、まるでお店で「品切れです」と言われるようなものです。一方で、StackTraceは「そのエラーが起きた経緯の詳細」で、「どこの倉庫で在庫がなくなったのか」「どの担当者が対応したのか」といった記録にあたります。

どちらか片方だけでも役立ちますが、両方を見ることで「原因」と「発生場所」を同時に把握でき、問題解決が早くなります。

まとめ

まとめ
まとめ

例外情報を正しく読み取る重要性

C#で開発を進めると、思いがけない挙動や予想外の動作に戸惑う場面が少なくありません。とくに、初めて例外処理に触れる初心者ほど、発生した問題の正体がつかめず作業が止まってしまうことがあります。そうしたときに役立つのが、Exception.MessageException.StackTraceです。これらは、発生した例外の内容と場所を明確に示してくれる手がかりであり、原因調査を進めるうえで欠かせない情報となります。 C#の例外情報には、どの処理で問題が生じたのか、どのメソッドを経由してその状態に至ったのかなど、詳細な履歴が含まれています。こうした情報を読み解くことで、ただエラーを「見て終わり」にするのではなく、「原因を理解して改善する」という前向きなステップに進むことができます。同時に、日々の開発の中で蓄積される経験が、より正確で安全なコードを書く力へとつながっていきます。

Messageで原因を把握する

Messageは、例外が発生した理由を短く端的に伝えてくれる重要な手掛かりです。たとえば「ゼロ除算」「配列の範囲外」「null参照」など、内容そのものが明確に示されるため、初心者でも状況を理解しやすくなります。特に大規模なプロジェクトでは、たくさんの処理が入り組んでいることが多いため、まずはMessageを読むことで、問題がどの種類の例外に分類されるのかがわかり、原因を特定しやすくなります。

StackTraceで発生場所を特定する

一方のStackTraceは、実際にどの行で例外が発生したのかを追跡するための情報です。例外の発生場所だけでなく、その直前にどのメソッドが実行されていたのかといった履歴も含まれているため、全体の流れを把握することができます。コードが複雑になればなるほど、どこで不具合が起きたのか分かりづらくなるため、このStackTraceの存在は非常に重要です。

両方を組み合わせることで原因を素早く発見

Messageで「何が起きたか」、StackTraceで「どこで起きたか」を把握できるようになると、エラー原因を絞り込むスピードが大幅に向上します。初心者のうちは、例外が出た瞬間に不安になってしまいがちですが、MessageとStackTraceを読む習慣がつけば、例外は単なる障害ではなく、改善点を教えてくれる案内のような存在に変わっていきます。また、ログとして記録しておけば、後から振り返りやチーム開発にも役立ちます。

サンプルコードでもう一度確認しよう

下記は今回の学びを整理しつつ、例外情報を取得する処理のサンプルです。MessageとStackTraceがどのように活用されるか、実際のコードを通して確認してみましょう。


// 例外情報を詳細に確認するサンプル
try
{
    string name = null;
    Console.WriteLine(name.ToUpper()); // null参照例外
}
catch (Exception ex)
{
    Console.WriteLine("内容 : " + ex.Message);
    Console.WriteLine("場所 : " + ex.StackTrace);
}

以上のように、例外情報を正しく読み解くことによって、原因分析の正確さや作業効率が飛躍的に向上します。日常的な学習や開発の中で例外に触れるたびに、MessageとStackTraceの読み方を意識することで、プログラムの理解もより深まります。とくに、複雑な処理が絡む場面では、StackTraceが示す履歴が大きなヒントになります。

先生と生徒の振り返り会話

生徒

「今日は例外のMessageとStackTraceの読み方がよく分かりました。どんなエラーなのかと、どこで起きたのかが分かると原因を探しやすいですね。」

先生

「その通りですね。特にStackTraceは流れを追えるので、大きなヒントになりますよ。慣れてくると、エラーを見ただけで原因を素早く推測できるようになります。」

生徒

「なるほど。Messageで状況を理解して、StackTraceで場所を特定するんですね。これならエラーが出ても怖くありません。」

先生

「ええ、例外情報はプログラマーにとって重要な道標です。落ち着いて情報を読み取れば、解決への道筋がきっと見えてきますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

C#でエラーが起きたとき、どのようにして原因を調べればいいですか?

C#でエラーが発生すると、Exceptionクラスの情報を使って原因を調べることができます。特にException.MessageとException.StackTraceを活用することで、エラーの内容や発生箇所が明確になり、原因を特定しやすくなります。
カテゴリの一覧へ
新着記事
New1
COBOL
COBOLとJava・.NETが共演!段階的モダナイゼーションでシステムを最新化する方法
New2
C#
C#でループの中に条件分岐を書く方法!入れ子制御構造の基本
New3
C#
C#のthrow文の基本!例外を自分で発生させる方法
New4
C#
C#のADO.NETの基礎!SqlConnectionとSqlCommandの使い方を初心者向けに徹底解説
人気記事
No.1
Java&Spring記事人気No1
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.3
Java&Spring記事人気No3
C#
C#のLINQでOrderByを使った並び替えを完全ガイド!初心者でもわかるソート方法
No.4
Java&Spring記事人気No4
C#
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.5
Java&Spring記事人気No5
COBOL
COBOLのコンパイラと開発環境を徹底解説!初心者にもわかりやすい入門ガイド
No.6
Java&Spring記事人気No6
COBOL
COBOLの帳票レイアウトを美しく!可読性向上テクニックを徹底解説
No.7
Java&Spring記事人気No7
C#
C#の引数と戻り値の基本!値を受け渡し・返す仕組みを理解しよう
No.8
Java&Spring記事人気No8
C#
C#のラムダ式の書き方と構文を初心者向けに完全解説