C# | ゼロからはじめるプログラミング、30日で基礎を学ぶC#:基本機能を身に付ける - Day12:例外処理の練習問題

C# 30日で身につけるC#
スポンサーリンク
スポンサーリンク

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 は「意図的に例外を発生させる」ための仕組みです。 業務ルールに違反した場合など、自分でエラーを作りたい場面で使います。

応用問題:数値入力チェック

問題

次の条件を満たす数値入力チェックを作ってください。

  1. ユーザーが入力した値を数値に変換する
  2. 数値でない場合は「数値として認識できません」と表示
  3. 数値が 0 未満なら throw で例外を発生させる
  4. 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 を分けることで、 「変換エラー」と「業務ルール違反」を区別して処理できます。

応用問題:ファイル読み込みエラー処理

問題

次の条件を満たすファイル読み込み処理を作ってください。

  1. “data.txt” を読み込む
  2. ファイルがない場合は「ファイルが存在しません」と表示
  3. 権限がない場合は「アクセス権限がありません」と表示
  4. その他のエラーは「予期しないエラー」として表示
  5. 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 → 意図的に例外を発生させる

これらを組み合わせることで、 入力チェックやファイル処理など、実務レベルの安全なプログラムが作れるようになります。

タイトルとURLをコピーしました