我有一个相当基本的作业,涉及使用try/catch
根据输入的数字(使用数组)显示多个名称。如果输入的数字太大,它仍然可能显示名称,但也必须给出一个越界错误。如果使用单词或类似的东西,则需要提供格式错误。
到目前为止,我的代码工作得相当好,因为它可以显示一个越界错误,但是当我输入一个单词时,我没有得到格式错误。
我还想知道如果数字低于5(如果只接受5),是否有可能导致错误发生。
这是我的代码:
class Program
{
static void Main(string[] args)
{
string[] names = new string[5] { "Merry", "John", "Tim", "Matt", "Jeff" };
string read = Console.ReadLine();
int appel;
try
{
int.TryParse(read, out appel);
for (int a = 0; a < appel; a++)
{
Console.WriteLine(names[a]);
}
}
catch(FormatException e)
{
Console.WriteLine("This is a format error: {0}", e.Message);
}
catch (OverflowException e)
{
Console.WriteLine("{0}, is outside the range of 5. Error message: {1}", e.Message);
}
catch (Exception e)
{
Console.WriteLine("out of range error. error message: {0}", e.Message);
}
Console.ReadLine();
}
}
答案 0 :(得分:1)
int.TryParse(read, out appel);
此代码不会抛出任何异常,这将返回True(如果解析成功则返回false)。 如果您打算抛出异常,请使用:int.Parse
答案 1 :(得分:0)
bool b = int.TryParse(read, out appel);
if(!b)
throw new FormatException("{0} is not a valid argument", read);
或
int.Parse(read, out appel);
只要输入错误的值,就会抛出一个形式感知。