C# 在捕获异常后,如何使程序重复自身?

C# 在捕获异常后,如何使程序重复自身?,c#,exception,try-catch,C#,Exception,Try Catch,我希望程序在出现格式异常后重复自身 相反,它只是继续。我如何让它重复 例如,它应该在异常后打印错误消息,然后重复程序,直到用户遵守 我试图将try-catch放在do-while循环中,但它使我的numAge变量成为局部变量,并显示了一个错误 int-numAge; 尝试 { 做 { Console.WriteLine(“输入您的年龄”); numAge=int.Parse(Console.ReadLine()); }而(numAge

我希望程序在出现格式异常后重复自身

相反,它只是继续。我如何让它重复

例如,它应该在异常后打印错误消息,然后重复程序,直到用户遵守

我试图将try-catch放在do-while循环中,但它使我的numAge变量成为局部变量,并显示了一个错误

int-numAge;
尝试
{
做
{
Console.WriteLine(“输入您的年龄”);
numAge=int.Parse(Console.ReadLine());
}而(numAge<0);
}
捕获(格式化异常错误)
{
Console.WriteLine(err.Messagec+“请重试”);
//我该如何让它再试一次?
}
Console.WriteLine(“程序继续”);

只需将try-catch块移动到循环内部而不是外部:

do {
    try
    {
        Console.WriteLine("Enter your age");
        numAge = int.Parse(Console.ReadLine());
    }
    catch (FormatException err)
    {
        numAge = -1;
        Console.WriteLine(err.Messagec+ "Please try again");
    }
} while (numAge < 0);
do{
尝试
{
Console.WriteLine(“输入您的年龄”);
numAge=int.Parse(Console.ReadLine());
}
捕获(格式化异常错误)
{
numAge=-1;
Console.WriteLine(err.Messagec+“请重试”);
}
}而(numAge<0);

流量控制不应使用例外情况。在这种特定的情况下,您应该使用
TryParse
而不是
Parse
,这样您就可以从一开始就防止异常发生。这不是只对formatexception有效吗?如果我有一个溢出异常,有没有办法在一个异常后重复一个程序?@bubblepop它对任何与解析相关的异常都有效,包括溢出,请看hi谢谢你的回复,你能告诉我为什么要numAge=-1吗?@bubblepop只是为了确保它小于
0
,因此,使用continue循环的循环。如果有多个异常,我将如何使用它?我尝试使用indexoutofbounds异常,但没有成功work@bubblepop为什么会有一个
IndexOutOfBoundsException
呢?哦,对不起,我指的是溢出异常。只要我放一个,它就会说“使用未分配的局部变量”。我只希望它重复多个异常,直到用户得到正确的结果。