C#のエラーと例外の基本!初心者がよく出会うエラーとその対処法まとめ
生徒
「C#のプログラムを作ろうとしたら、赤い文字でエラーって出ました!これってどうすればいいんですか?」
先生
「それはC#のエラーというもので、プログラムに間違いがあるときに表示されるんですよ。」
生徒
「初心者でもよくあるエラーって、どんなものですか?」
先生
「それでは、初心者がよく出会うC#のエラーと、その対処法を一緒に学んでいきましょう!」
1. エラーと例外って何?
C#でプログラミングをしていると、「エラー(Error)」や「例外(Exception)」という言葉に出会うことがあります。これらは、プログラムの中で何かがおかしいときに教えてくれるサインです。
例えば、「りんごを3個ください」と言われたのにりんごが1個しかなかったら、「りんごが足りません!」と教えてくれるようなものです。
エラーには主に2種類あります:
- 文法エラー(構文エラー):プログラムの書き方が間違っている。
- 実行時エラー(例外):書き方は正しいけど、動かしてみたら問題が起きる。
2. よくあるC#の文法エラーとその意味
プログラミング初心者がよく出会うエラーには、次のようなものがあります。
2-1. セミコロン(;)を忘れた!
C#では、文の終わりに;(セミコロン)をつける必要があります。
Console.WriteLine("こんにちは")
このコードにはセミコロンがありません。正しくはこうです:
Console.WriteLine("こんにちは");
2-2. カッコを閉じ忘れた!
カッコには、()や{}があります。開いたら必ず閉じましょう。
if (x > 10
{
Console.WriteLine("10より大きいです");
()が閉じられていません。正しくは:
if (x > 10)
{
Console.WriteLine("10より大きいです");
}
2-3. スペルミス
例えばConsoleをConsolと書いてしまうと、
Consol.WriteLine("こんにちは");
このようなエラーになります。「その命令は知らないよ」と言っているのです。
3. 実行時エラー(例外)の基本
文法エラーがなくても、プログラムを実行したときにエラーが出ることがあります。これを「例外(Exception)」といいます。
例えば、0で割る計算をするとどうなるでしょう?
int x = 10;
int y = 0;
int result = x / y;
このコードを実行すると、次のような例外が発生します。
System.DivideByZeroException: 0 で除算しようとしました。
これは「0では割り算できないよ!」という意味です。
4. try-catchで例外を防ぐ
try-catch構文を使うことで、例外が発生してもプログラムを止めずにエラーメッセージを出すことができます。
int x = 10;
int y = 0;
try
{
int result = x / y;
Console.WriteLine(result);
}
catch (DivideByZeroException)
{
Console.WriteLine("0で割ることはできません!");
}
0で割ることはできません!
tryの中でエラーが起きたら、catchに書かれた処理が実行されます。
5. よくある例外の種類と意味
C#にはよく出る例外がいくつかあります。初心者がよく出会うものを紹介します。
- DivideByZeroException:0で割り算しようとしたとき
- NullReferenceException:使おうとしたものが空(null)のとき
- FormatException:文字を数字に変換しようとしたけど、数字じゃなかったとき
FormatExceptionの例
string input = "abc";
int number = int.Parse(input);
「abc」は数字ではないので、このコードはエラーになります。
6. エラーが出たときの対処法
エラーが出たとき、初心者でもできる対処法を紹介します。
- 赤いエラーメッセージをよく読む:「どこで何がダメだったのか」が書かれています。
- 該当の行番号を確認する:Visual Studioなどでは、エラーのある行にマークがつきます。
- スペルやカッコをチェックする:小さなミスが多いです。
- 検索する:エラーメッセージをコピーしてGoogleで調べると、多くの解決方法が見つかります。
7. エラーを恐れずにチャレンジしよう!
エラーは初心者だけでなく、プロのプログラマーでも日常的に経験するものです。大切なのは「エラーが出ても諦めずに原因を探す」ことです。
最初のうちは意味がわからなくても、少しずつ読めるようになります。間違えることで、プログラミングがどんどん上達しますよ!
まとめ
C#のエラーや例外についてふりかえると、エラーは単純な書き間違いから、実行して初めて気づく問題まで幅広く存在し、プログラムを理解するうえで欠かせない重要な要素であることが分かります。とくに初心者が最初につまずきやすいのは、セミコロンの付け忘れやカッコの閉じ忘れ、命令のスペルミスといった文法的な誤りで、これらは小さなミスのように思えても、プログラム全体を止めてしまう原因になります。文法エラーは、プログラムを書いている段階で早いタイミングで発見されるため、焦らず落ち着いてメッセージを読み解き、自分の書いたコードを確認していく習慣を身につけることが大切です。 また、書き方が正しくても実行したときに発生する例外は、より実践的なエラーで、プログラムが実際に動く中で起きる特有の問題です。例えば、0で割ると発生するDivideByZeroException、値がnullのまま操作しようとしたときのNullReferenceException、数字ではない文字列を数値に変換したときのFormatExceptionなど、よく出る例外の意味を知っておくことで、原因をすばやく判断しやすくなります。例外はルールを理解していれば必ず対処できますし、try-catchを使ってプログラムを安全に動かす方法を覚えておくことは、今後の開発でも大いに役立つスキルになります。 さらに、エラーが出たときに表示されるメッセージを正しく読む力は、プログラミングの上達に欠かせない重要な能力です。赤い文字を見ると驚いてしまいますが、そのメッセージには「どこで」「何が」問題になっているかが丁寧に書かれているため、読み慣れるほど問題解決がスムーズになります。行番号を確認する、エラーの単語を調べる、スペルを再確認するなど地道な作業を繰り返すことで、自然とエラーに強くなっていきます。 今回学んだ「文法エラー」「実行時エラー」「例外の種類」「try-catchの役割」「よくある初心者のミス」はどれもC#を使いこなす基礎の部分であり、どんな大規模なプログラムでも避けて通れないものです。エラーを正しく理解し、原因を丁寧に追う姿勢を身につければ、プログラミングはより魅力的で楽しいものになります。下記のような簡単な例外処理付きプログラムを試しに書いてみると、C#の動作をより深く理解できるはずです。
サンプルプログラムで例外処理に慣れよう
using System;
class ErrorSummarySample
{
static void Main()
{
Console.WriteLine("数字を入力してください:");
string input = Console.ReadLine();
try
{
int number = int.Parse(input);
int result = 100 / number;
Console.WriteLine("計算結果:" + result);
}
catch (FormatException)
{
Console.WriteLine("数字以外が入力されています。正しい数字を入力してください。");
}
catch (DivideByZeroException)
{
Console.WriteLine("0で割ることはできません。別の数字を入力してください。");
}
}
}
このプログラムでは、ユーザーから入力された文字を数値に変換し、100を割り算する処理を行います。数値でない入力にはFormatException、0を入力した場合にはDivideByZeroExceptionが発生し、それぞれcatchブロックで適切なメッセージを返します。例外処理のおかげでプログラムは途中で止まらず、エラーの種類に応じた案内を行えるので、とても実用的な仕組みになっています。こうした実例を通じてエラーの意味や例外処理の流れを理解することで、より安心してC#のプログラムを書くことができるようになるでしょう。 また、エラーは初心者だけでなく経験者でも日常的に向き合うものであり、エラーに強いということはプログラムの品質を上げるための基礎力が身についている証拠ともいえます。どんな場面でも落ち着いて原因を特定し、自分で解決方法を探せるようになるためにも、普段からエラーメッセージにじっくり向き合い、理解する習慣を持つことが大切です。今回の内容は、今後より複雑なプログラムを書く際にも確実に役立つ知識になりますので、何度も手を動かして感覚を定着させていきましょう。
生徒
「今日いろいろなエラーを見たけれど、意味が分かると少し安心しました。最初は赤い文字がすごく怖かったです。」
先生
「最初は誰でも驚きますよ。でも、エラーは悪いものではなくて『どこで間違えているか教えてくれているサイン』なんです。」
生徒
「例外も最初は難しそうに感じたけれど、0で割ったり数字じゃない文字を入れたり、理由が分かれば納得できますね。」
先生
「その通りです。try-catchを使えば安全にプログラムを動かすこともできますし、原因が分かれば対処方法も見つかりやすくなりますよ。」
生徒
「これからはエラーが出ても落ち着いて読んで、少しずつ原因を探っていけるように頑張ります!」
先生
「その姿勢が大事です。エラーに慣れていけば、もっと自由にC#を書けるようになりますよ。」