2

次のコードがあります。

       List<int> moneys = new List<int>();
       Console.WriteLine("Please enter the cost of your choice");
       int money = int.Parse(Console.ReadLine());
       moneys.Add(money);

これからテキストを入力すると、プログラムは動作を停止し、未処理の例外メッセージが表示されます。プログラムが動作を停止しないようにすることが可能である場合、例外をどのように処理するのだろうかと思っていましたか?

4

5 に答える 5

5

TryParseメソッドを使用する必要があります。入力が有効でない場合、例外はスローされません。これを行う

int money;
if(int.TryParse(Console.ReadLine(), out money))
   moneys.Add(money);
于 2013-08-07T13:59:48.483 に答える
0

int.Parse文字列の解析に失敗した場合に例外をスローするように設定されています。次の 2 つの選択肢があります。

1) Try/Catch を使用して例外を処理する

try {
    int money = int.Parse(Console.ReadLine());
    moneys.Add(money);
} catch {
    //Did not parse, do something
}

このオプションにより、さまざまな種類のエラーをより柔軟に処理できます。catch ブロックを拡張して、入力文字列で考えられる 3 つの間違いを分割し、別のデフォルトの catch ブロックを拡張して他のエラーを処理することができます。

} catch (ArgumentNullException e) {
    //The Console.ReadLine() returned Null
} catch (FormatException e) {
    //The input did not match a valid number format
} catch (OverflowException e) {
    //The input exceded the maximum value of a Int
} catch (Exception e) {
    //Other unexpected exception (Mostlikely unrelated to the parsing itself)
}

2)文字列が解析されたかどうかに応じてint.TryParsewhich を返し、結果を 2 番目のパラメーター (キーワードを使用)で指定された変数に送信するを使用します。truefalseout

int money;
if(int.TryParse(Console.ReadLine(), out money))
    moneys.Add(money);
else
    //Did not parse, do something
于 2013-08-07T14:02:07.793 に答える