c# - 自定义格式异常 c# - 异常未处理,为什么?
问题描述
我尝试对以下代码使用自定义异常。
当用户输入一个字符串而不是 int 数字时,它应该显示来自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("\n\n"+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);
}
推荐阅读
- web-scraping - Scrapy - 蜘蛛在产生请求后卡住并且回调函数不起作用
- python - BeautifulSoup4 无法通过搜索文本找到“a”标签
- javascript - 在具有多个嵌套对象的对象中使用 Vue.set
- algorithm - Knn 算法是如何工作的
- python - 使用python数值求解有限定义区间上的非线性方程组
- python - 对 qlik 的 Python Web 套接字请求
- typescript - 点符号内的打字稿类型提示
- javascript - 在 div 上添加自定义动画类不起作用?
- javascript - 删除 Google 表格电子表格中的重复项
- r - dir() 和 list.file() 在 R 中具有非英语名称