キャッチフォーマットの例外をテストしたいが、単語を入力しようとするとプログラムがクラッシュする。私のプログラムはクラッシュすることなく例外をキャッチできますか?フォーマット例外 - キャッチと試し
string words;
int[] number;
int i = 0;
while (true)
{
Console.WriteLine("How many numbers would you like to enter? ");
words = Console.ReadLine();
if (isInteger(words))
{
number = new int[Convert.ToInt32(words)];
Console.WriteLine("Please enter your numbers: ");
for (i = 0; i < number.Length; ++i)
{
number[i] = Convert.ToInt32(Console.ReadLine());
isInteger(words);
}
}
}
isInteger
方法:
private static bool isInteger(string words)
{
try
{
return true;
}
catch (FormatException)
{
return false;
}
}
'try'ブロックで' return true; 'が実行されない' catch'ブロックを引き起こします。 'words'が数値でない場合、' FormatException'を投げるtryブロックの中で 'int.Parse(words)'を使ってチェックできます。 –
これは、すべてのステートメントが値(真、偽など)を返さなければならないと言います。 –
'try {var number = int.Parse(words);真を返します。 } '=>' words'が数値でない場合、 'FormatException'を投げてから' return false'を実行します。 'if(int.TryParse(words、out int number)){trueを返します。 } 'しかし、' FormatException'を投げていません。 –