自定义格式异常未处理,为什么?



我尝试对下面的代码使用自定义异常.
当用户输入字符串而不是整数时,它应该显示来自AgeException的消息。 但它显示未经处理的异常。

class Program
{
static void Main(string[] args)
{
try {
Console.WriteLine("Enter Your Age: ");
int age = Convert.ToInt32(Console.ReadLine());
if(age>40 || age<6){
throw new AgeException(age);
}
else{
Console.WriteLine("Your age is :"+age);
}

}
// when (ex.Message.Length>50)
catch(AgeException ex) //when (ex.Message.Length>15)
{
//throw ex;
Console.WriteLine("Errorrrrr from Age exception class: "+ex.Message);
Console.ReadLine();
}
//catch(Exception ex)
//{
//     Console.WriteLine(ex.Message);
//    Console.WriteLine("nn"+ex.StackTrace);

//}

Console.ReadLine();
}
}
class AgeException : FormatException
{
private int messageDetails;
// private string messageage;
public AgeException() {        }
public AgeException(int age) : base(String.Format("Invalid Student AGe: {0}", age))
{
messageDetails = age;
}

public override string Message => $"Invalid age: {messageDetails}";
//public override string Message => $"Invalid age: {messageage}";
}```

[1]: https://i.stack.imgur.com/YmWay.png

您可以检查用户是否只输入数字

Console.WriteLine("Enter Your Age: ");
int age;

while(!int.TryParse(Console.ReadLine(), out age))
{
Console.Clear();
Console.WriteLine("You entered an invalid number");
Console.Write("Enter Your Age: ");
}
if(age>40 || age<6){
throw new AgeException(age)
}
else{
Console.WriteLine("Your age is :"+age);
}

最新更新