カテゴリ: C# 更新日: 2026/02/10

C#のthrow文の基本!例外を自分で発生させる方法

C#のthrow文の基本!例外を自分で発生させる方法
C#のthrow文の基本!例外を自分で発生させる方法

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

生徒

「C#でプログラムを作っているときに、自分でエラーを出すことってできるんですか?」

先生

「はい、C#ではthrow(スロー)文を使って、自分で例外を発生させることができます。」

生徒

「例外って、エラーとは違うんですか?」

先生

「例外はプログラム実行中に発生する問題を表す仕組みのことです。エラーをただ止めるのではなく、正しく処理するために使われます。では、throw文の基本を見ていきましょう!」

1. throw文とは?

1. throw文とは?
1. throw文とは?

C#のthrow文は、自分で例外(エラーのような特別な状態)を発生させるための構文です。例えば、プログラムの中で「この値は使ってはいけない」と判断したときに、強制的に例外を投げて処理を中断することができます。

日常生活で例えるなら、「冷蔵庫を開けたら牛乳が腐っていたので、飲む前に『これは危ない!』と家族に知らせて止める」というイメージです。throw文は、この『危ないから処理を止める』役割を担っています。

2. throw文の基本構文

2. throw文の基本構文
2. throw文の基本構文

throw文を使うときは、次のように書きます。


throw new Exception("エラーメッセージ");

new Exception("エラーメッセージ")の部分で、どのような例外を投げるかを指定します。このときに書いたメッセージは、後でエラー内容を確認するのに役立ちます。

3. 具体的な例:年齢のチェック

3. 具体的な例:年齢のチェック
3. 具体的な例:年齢のチェック

それでは実際に、年齢を入力してチェックするプログラムを例にしてみましょう。もし負の数(マイナスの年齢)が入力された場合は、正しい値ではないので例外を発生させます。


using System;

class Program
{
    static void Main()
    {
        int age = -5;

        if (age < 0)
        {
            throw new Exception("年齢はマイナスにできません。");
        }

        Console.WriteLine($"あなたの年齢は{age}歳です。");
    }
}

このプログラムを実行すると、ageがマイナスのためthrow文が実行され、例外が発生します。


未処理の例外: System.Exception: 年齢はマイナスにできません。

4. throw文を使うメリット

4. throw文を使うメリット
4. throw文を使うメリット

throw文を使うメリットは、プログラムを「安全に」動かせることです。もし間違ったデータや危険な処理がそのまま進んでしまうと、予期せぬバグやシステムの停止につながります。throw文で早めに止めることで、問題を発見しやすくなるのです。

例えば、ネットショッピングで「商品の価格が0円」と入力されたら、そのまま進めてしまうと不正になりますよね。そんなときにthrow文を使って「不正な価格です」と知らせれば、システムを守ることができます。

5. Exception以外の例外を投げる

5. Exception以外の例外を投げる
5. Exception以外の例外を投げる

C#にはException以外にも、より具体的な例外クラスがあります。例えば、引数が不正なときにはArgumentExceptionを使うと、より意味がわかりやすくなります。


int price = -100;

if (price < 0)
{
    throw new ArgumentException("価格は0以上である必要があります。");
}

このように、適切な例外クラスを使うことで、エラーの種類を区別しやすくなります。

6. throw文を使うときの注意点

6. throw文を使うときの注意点
6. throw文を使うときの注意点

初心者がよく間違えるポイントとして、throw文を「ただのエラーメッセージを出すもの」と勘違いしてしまうことがあります。しかし、throwはプログラムの実行を中断してしまう強力な命令です。

つまり、使いすぎるとプログラムが止まりやすくなってしまいます。大切なのは、「本当に危険なとき」「間違ったデータを受け取ったとき」にだけthrow文を使うことです。

7. throw文で安全なプログラムを作ろう

7. throw文で安全なプログラムを作ろう
7. throw文で安全なプログラムを作ろう

ここまで、C#におけるthrow文の基本を解説しました。throw文を使うことで、意図的に例外を発生させ、間違った処理を未然に防ぐことができます。エラーチェックをしっかり行い、安全で信頼できるプログラムを作るために、ぜひ活用してみてください。

まとめ

まとめ
まとめ

C#のthrow文は、例外処理において非常に重要な役割を持っています。プログラムの中で意図的に問題が発生したことを知らせたいとき、このthrowを使うことで、安全性と保守性の高いコードを書くことが可能になります。特に、入力値のチェックや、不正な状態の検出、業務ロジック上で許容できない条件が発生したときなどに活用されます。

たとえば、年齢がマイナスだったり、商品の価格がゼロ以下だったりするような不自然なデータが入力されたときに、それを見逃すことなくthrow文を使って「異常な状態である」と宣言することができます。これは開発者自身がルールを定義し、ルールに反する動作を未然に防ぐためのとても大切な手段なのです。

また、Exceptionだけでなく、ArgumentExceptionInvalidOperationExceptionなどのより具体的な例外クラスを使うことで、問題の内容がより明確になります。これにより、後からプログラムを読む人や、バグを修正する人にとっても、非常に理解しやすい設計になります。

throwを使うときの注意点として、むやみに使いすぎないことが挙げられます。プログラムを安全に保つための仕組みですが、乱用すると逆にプログラムが予期せず停止してしまう原因にもなります。例外は「特別な事態」であり、「通常の流れでは発生しないはずのこと」を伝えるために使うという原則を守りましょう。

ここで、throw文の基本的な使い方をもう一度おさらいしておきましょう。


void CheckEmail(string email)
{
    if (string.IsNullOrEmpty(email))
    {
        throw new ArgumentException("メールアドレスが空です。");
    }
    if (!email.Contains("@"))
    {
        throw new FormatException("正しいメールアドレスの形式ではありません。");
    }

    Console.WriteLine("メールアドレスは正常です。");
}

このように、条件ごとに適切な例外をthrowで投げることで、問題が発生した箇所や理由を明確にできます。これにより、後続処理に悪影響を与える前に問題を早期に検知でき、バグの原因をすぐに特定しやすくなります。

実際の開発現場では、throw文とtry-catchをセットで使用して、「例外が発生するかもしれない」場所を安全に囲み、適切な対処を行うのが一般的です。C#の例外処理を理解することは、品質の高いアプリケーション開発の第一歩でもあります。

プログラムを正しく制御し、信頼性のあるソフトウェアを作るためにも、例外処理は避けて通れない知識です。throw文をマスターすることで、データの妥当性チェック、バグの早期発見、異常系のテストなど、さまざまな場面でスキルを活かすことができます。

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

生徒

「先生、throw文って最初はただエラーを出すだけだと思ってましたが、使いどころがすごく大事なんですね!」

先生

「そうだね。エラーの早期発見は、安全なプログラムを作るための基本なんだ。throwはそのための強力な道具だよ。」

生徒

「ArgumentExceptionとか、いろんな種類の例外クラスを使い分けると、何が悪いのかがすごく分かりやすくなるんですね。」

先生

「うん。意味のある例外を投げることで、読み手や自分自身の理解が深まるし、後からの保守も楽になるよ。」

生徒

「でもthrowを使いすぎると逆効果になるってことも学びました。必要なときだけ使うようにします!」

先生

「その心がけが大切。例外はあくまで特別なことだから、使いすぎず、丁寧に書いていこうね。」

生徒

「これでエラー処理の考え方が一歩前に進んだ気がします!次はtry-catchとの連携も学びたいです!」

先生

「とても良い流れだね。次回は実際にcatchで受け取って、どう対処するかをしっかり見ていこう!」

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

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

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

C#のthrow文と例外処理の違いは何ですか?エラーと例外の関係も初心者向けに詳しく知りたいです。

C#のthrow文は、意図的に例外を発生させるための命令です。例外処理は、発生した例外を適切に処理する仕組みを指します。throw文は「例外を起こす」、try-catchは「例外を受け止める」という役割の違いがあります。
カテゴリの一覧へ
新着記事
New1
C#
C#でループの中に条件分岐を書く方法!入れ子制御構造の基本
New2
C#
C#のthrow文の基本!例外を自分で発生させる方法
New3
C#
C#のADO.NETの基礎!SqlConnectionとSqlCommandの使い方を初心者向けに徹底解説
New4
C#
C#の例外クラス階層を理解しよう!Exception・SystemExceptionの基本をやさしく解説
人気記事
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#のラムダ式の書き方と構文を初心者向けに完全解説