【发布时间】:2021-01-06 16:00:51
【问题描述】:
我试图在这个小代码示例中包含一个异常处理。当我被提示输入conversionType时,我尝试输入应该触发catch代码并打印出错误消息的字符串,但代码只是像任何其他错误一样关闭,表明错误未被捕获尝试捕获块。我仍在学习异常处理在 C# 中的工作原理。那么有没有办法正确捕获异常并防止代码崩溃呢?
static void Main(string[] args)
{
int conversionType;
double number;
Console.WriteLine("Choose the type of conversion:\n" +
"1.Celsius to Fahrenheit\n" +
"2.Fahrenheit to Celsius");
try
{
conversionType = Convert.ToInt32(Console.ReadLine());
if (conversionType == 1)
{
Console.WriteLine("Enter the Temperature in Celsius: ");
number = Convert.ToDouble(Console.ReadLine());
number = number * 9 / 5 + 32;
Console.WriteLine("Temperature in Fahrenheit: {0:00.0}°F", number);
}
else if (conversionType == 2)
{
Console.WriteLine("Enter the Temperature in Fahrenheit: ");
number = Convert.ToDouble(Console.ReadLine());
number = (number - 32) * 5 / 9;
Console.WriteLine("Temperature in Celsius: {0:00.0}°C", number);
}
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
}
【问题讨论】:
-
可能发生的事情(如果您在 Visual Studio 中测试)是它会将错误消息打印到控制台,但随后程序窗口会立即关闭,因此您没有时间查看它。如果您在 catch 块结束后放置一个 Console.ReadLine() ,那么它应该暂停等待您在控制台窗口关闭之前按 Enter 键。但是...不要将异常用于简单的数据验证。例外应该主要是重大错误/失败。