演習課題「標準入力でプレイヤーを選択する」
右のコードは、標準入力から受け取った値に合わせて、RPGのプレイヤーを表示します。
このプログラムで、例外の種類に合わせて、下記のエラーメッセージを標準出力に表示して下さい。
配列の範囲外にアクセス : 0から(配列の最大インデックス)を入力してください
文字を入力 : 数値を入力してください
プログラムを実行して、想定どおり出力されれば演習課題クリアです!
期待する出力値
0から3を入力してください
#06:標準入力でプレイヤーを選択しよう
例外処理の具体例として、RPGのプレイヤーを表示するプログラムに例外処理を追加します。
標準入力からの値に応じて、プレイヤーを選択して表示させますが、処理できない場合にエラーメッセージを表示させましょう。
// 標準入力でプレイヤーを選択しよう
using System;
class Lesson10
{
public static void Main()
{
// プレイヤーを配列で記述する
string[] players = { "勇者", "戦士", "魔法使い", "忍者" };
try
{
// 標準入力から整数を入力する
var number = int.Parse(Console.ReadLine());
// 入力値に合わせて、プレイヤー名を表示する
Console.WriteLine(players[number] + "はモンスターを倒した");
}
catch (IndexOutOfRangeException e)
{
Console.WriteLine("0から" + (players.Length - 1) + "を入力してください");
Console.Error.WriteLine(e);
}
catch (FormatException e)
{
Console.WriteLine("数値を入力してください");
Console.Error.WriteLine(e);
}
finally
{
Console.WriteLine("次の冒険が始まった");
}
}
}
【IndexOutOfRangeException】
範囲外のインデックスを使用して、配列やコレクションの要素にアクセスしようとしたときに発生する例外
IndexOutOfRangeException Class (System) | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/api/system.indexoutofrangeexception?view=netframework-4.8
FormatException Class (System) | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/api/system.formatexception?view=netframework-4.8
例外処理 - C# によるプログラミング入門 | ++C++; // 未確認飛行 C
https://ufcpp.net/study/csharp/oo_exception.html
例外と例外処理 - C# プログラミング ガイド | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/exceptions/
Exception Class (System) | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/api/system.exception?view=netframework-4.8