Day12 例外処理・練習問題と解答解説
Day12 で学んだ try / catch / finally / throw を確実に身につけるために、 初心者でも理解しやすい練習問題と丁寧な解答・解説をまとめています。 例外処理は「プログラムを安全に動かすための必須技術」ですので、ここでしっかり定着させてください。
try の練習問題
問題
次のコードは "abc" を数値に変換しようとしてエラーになります。 try を使ってエラーを捕まえるように書き換えてください。
int number = int.Parse("abc");
Console.WriteLine(number);
C#解答と解説
try
{
int number = int.Parse("abc");
Console.WriteLine(number);
}
catch
{
Console.WriteLine("変換に失敗しました");
}
C#try は「エラーが起きる可能性がある処理」を囲むためのブロックです。 int.Parse は失敗すると例外を投げるため、try-catch で安全に扱う必要があります。
catch の練習問題
問題
ユーザーが入力した値を数値に変換し、 変換できなかった場合は「数値として認識できません」と表示してください。
解答と解説
Console.Write("数値を入力してください:");
string input = Console.ReadLine();
try
{
int number = int.Parse(input);
Console.WriteLine("入力された数値: " + number);
}
catch (FormatException)
{
Console.WriteLine("数値として認識できません");
}
C#catch は「エラーが起きたときの処理」を書く場所です。 FormatException を指定することで「変換エラーだけを捕まえる」ことができます。
finally の練習問題
問題
次の処理に finally を追加し、 エラーの有無に関わらず「処理を終了します」と表示してください。
int number = int.Parse("abc");
C#解答と解説
try
{
int number = int.Parse("abc");
}
catch
{
Console.WriteLine("変換に失敗しました");
}
finally
{
Console.WriteLine("処理を終了します");
}
C#finally は「必ず実行される」ブロックです。 後片付けやログ出力など、必ず行いたい処理をここに書きます。
throw の練習問題
問題
変数 age が 0 未満の場合、 throw を使って「年齢は0以上である必要があります」という例外を発生させてください。
解答と解説
int age = -5;
try
{
if (age < 0)
{
throw new Exception("年齢は0以上である必要があります");
}
Console.WriteLine("年齢: " + age);
}
catch (Exception ex)
{
Console.WriteLine("エラー: " + ex.Message);
}
C#throw は「意図的に例外を発生させる」ための仕組みです。 業務ルールに違反した場合など、自分でエラーを作りたい場面で使います。
応用問題:数値入力チェック
問題
次の条件を満たす数値入力チェックを作ってください。
- ユーザーが入力した値を数値に変換する
- 数値でない場合は「数値として認識できません」と表示
- 数値が 0 未満なら throw で例外を発生させる
- finally で「入力処理を終了します」と表示
解答と解説
Console.Write("数値を入力してください:");
string input = Console.ReadLine();
try
{
int number = int.Parse(input);
if (number < 0)
{
throw new Exception("0以上の数値を入力してください");
}
Console.WriteLine("入力された数値: " + number);
}
catch (FormatException)
{
Console.WriteLine("数値として認識できません");
}
catch (Exception ex)
{
Console.WriteLine("エラー: " + ex.Message);
}
finally
{
Console.WriteLine("入力処理を終了します");
}
C#FormatException と Exception を分けることで、 「変換エラー」と「業務ルール違反」を区別して処理できます。
応用問題:ファイル読み込みエラー処理
問題
次の条件を満たすファイル読み込み処理を作ってください。
- “data.txt” を読み込む
- ファイルがない場合は「ファイルが存在しません」と表示
- 権限がない場合は「アクセス権限がありません」と表示
- その他のエラーは「予期しないエラー」として表示
- finally で「ファイル処理を終了します」と表示
解答と解説
try
{
string text = File.ReadAllText("data.txt");
Console.WriteLine(text);
}
catch (FileNotFoundException)
{
Console.WriteLine("ファイルが存在しません");
}
catch (UnauthorizedAccessException)
{
Console.WriteLine("アクセス権限がありません");
}
catch (Exception ex)
{
Console.WriteLine("予期しないエラーが発生しました");
Console.WriteLine("詳細: " + ex.Message);
}
finally
{
Console.WriteLine("ファイル処理を終了します");
}
C#例外の種類ごとに catch を分けることで、 ユーザーにとってわかりやすいエラー表示ができます。
Day12 練習問題まとめ
Day12 の練習問題では、次のポイントを確認しました。
try → エラーが起きる可能性がある処理を囲む catch → エラーが起きたときの処理を書く finally → 必ず実行したい処理を書く throw → 意図的に例外を発生させる
これらを組み合わせることで、 入力チェックやファイル処理など、実務レベルの安全なプログラムが作れるようになります。
