WinFormsで学ぶ「例外処理」
― アプリを落とさないための第一歩 ―
現在、Windowsアプリケーションの作成に入り、
- ボタンのイベント
- 消費税計算機
- TryParseによる入力チェック
まで進みました
ここで次に大事になるのが 例外処理(Exception Handling) です。
目次
■ 例外とは何か?
次のコードを見てください。
int value = int.Parse(textBox1.Text);
もし TextBox に
abc
と入力したらどうなるでしょう?
→ アプリが落ちます。
これが 例外(Exception) です。
例外とは、
「想定外のエラーが起きました」という通知
のことです。
■ なぜ例外処理が必要なのか?
アプリが落ちると、
- ユーザーは困る
- 作った人の評価が下がる
- 実務では信用問題になる
だから、
エラーが起きても落ちない仕組み
が必要です。
■ try-catch の基本
例外を捕まえるには、次の形を使います。
try
{
int value = int.Parse(textBox1.Text);
label1.Text = value.ToString();
}
catch
{
MessageBox.Show("数値を入力してください");
}
流れ
- try:まずやってみる
- catch:エラーが起きたらここに来る
これでアプリは落ちません。
■ 例外の種類を指定する
より丁寧に書くこともできます。
try
{
int value = int.Parse(textBox1.Text);
}
catch (FormatException)
{
MessageBox.Show("数値形式が違います");
}
FormatException は
「数値に変換できません」という意味の例外です。
■ TryParseとの違い
すでに学んだ TryParse と比較してみましょう。
int value;
if (int.TryParse(textBox1.Text, out value))
{
label1.Text = value.ToString();
}
else
{
MessageBox.Show("数値を入力してください");
}
違い
| TryParse | try-catch |
|---|---|
| 失敗を想定している | 想定外のエラーを捕まえる |
| 戻り値で判定 | 例外を捕まえる |
| 入力チェック向き | ファイルや通信向き |
実務での使い分け
- 入力チェック → TryParse
- ファイル操作 → try-catch
- 通信処理 → try-catch
■ 非同期処理と例外
これから学ぶ非同期処理(async / await)でも例外は発生します。
private async void button1_Click(object sender, EventArgs e)
{
try
{
await Task.Delay(3000);
throw new Exception("エラーが発生しました");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
ポイントは:
await の中でも例外は発生する
必ず try-catch で囲む
■ 例外処理の考え方
例外処理は
「エラーを消す技術」ではありません。
正しくは、
エラーと向き合う技術
です。
■ 授業での理解ポイント
- int.Parseで落ちる体験をする
- try-catchで守る
- TryParseとの違いを理解する
- asyncの中でも使う
ここまで理解できれば十分です。
■ まとめ
✔ アプリは放っておくと落ちる
✔ try-catchで守れる
✔ TryParseとは役割が違う
✔ 非同期処理でも必要
WinFormsを学ぶ今のタイミングで、
「落ちないアプリを作る」という視点を持つことが重要です。
訪問数 1 回, 今日の訪問数 1回



ディスカッション
コメント一覧
まだ、コメントがありません