【WinForms基礎】ファイルが無いとアプリはなぜ落ちるのか
― 例外処理をやさしく理解する ―
目次
■ まず起きていること
現在のコード:
new System.IO.StreamReader("data.txt")
もし data.txt が存在しないとどうなるでしょうか?
答え:
アプリが強制終了します。
これは「バグ」ではなく、
ファイルが見つからないという“異常事態”が発生している
という状態です。
■ 例外とは何か?
例外とは、
プログラムが通常通り続行できない状態
のことです。
今回の例では、
- 読もうとした
- でもファイルが無い
- どうすればいいか分からない
だから止まります。
■ 例外をそのままにするとどうなる?
- アプリが突然終了する
- ユーザーは理由が分からない
- 「壊れている」と思われる
これでは困ります。
■ 例外を受け止める方法
そこで使うのが
try
{
// 危険かもしれない処理
}
catch
{
// エラーが起きたときの処理
}
です。
■ 電話帳アプリへの適用例
private void ReadFromFile()
{
try
{
using (System.IO.StreamReader file =
new System.IO.StreamReader("data.txt"))
{
while (!file.EndOfStream)
{
string line = file.ReadLine();
string[] data = line.Split(',');
this.phoneBook.Add(data[0], data[1]);
}
}
}
catch
{
MessageBox.Show("データファイルが見つかりません。");
}
}
■ 何が起きているか?
- まず try の中を実行する
- エラーが起きたら
- catch に移動する
- アプリは終了せずに続く
つまり、
「落ちる」のではなく
「エラーを受け止める」
ようになります。
■ さらに一歩だけ理解を深める
実は catch には情報を受け取る形もあります。
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
ex.Message には
「どんなエラーが起きたのか」
が入っています。
今は深く理解しなくても大丈夫です。
■ 例外処理の考え方
例外処理は、
転びそうになったときに手をつく仕組み
のようなものです。
転ばないようにするのではなく、
転んでも大けがをしないようにする。
それが try-catch です。
■ 今日の重要理解
- ファイルが無いと例外が発生する
- 例外は「異常事態」
- try-catch で受け止められる
- 受け止めればアプリは落ちない
訪問数 21 回, 今日の訪問数 21回



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