【发布时间】:2021-02-14 08:38:51
【问题描述】:
如何跳过“System.FormatException”?
例子:
public void HowMuchBookCar()
{
Console.Write("\nOk, how much Euros you want to book in 'CarAndBeauty': ");
double howMuch = Convert.ToDouble(Console.ReadLine());
CarAndBeauty = Input(CarAndBeauty, howMuch);
Save(@"C:\Users\tobia\Desktop\Neuer Ordner\JanuaryCategorie.txt");
Console.Clear();
WannaBook();
}
此方法是将特定金额预订到“汽车和美容”类别中。 如果用户在此处键入例如“G”(或不适用于此变量的内容),则会抛出“System.FormatException”并且程序停止工作......
这是有道理的......但是我怎样才能防止抛出异常,而不是一个特定的代码呢? (例如:“请输入有效的条目!”)
【问题讨论】:
-
阅读“如何在 c# 中捕获异常” - 例如 docs.microsoft.com/en-us/dotnet/csharp/programming-guide/…
-
对于这些类型的问题,我们确实需要一个规范的答案,即使用 Convert.ToX+exception 而不是 TryParse 的问题。这里可能不是这种情况,但似乎新开发者被教导使用前者并且从未接触过后者。它变得越来越普遍。 c# 讲师和在线教程真的那么“糟糕”吗?是的,Convert 有有效的用途,但处理用户输入不应该是其中之一
-
@pinkfloydx33 所以你的意思是使用 TryParse 应该很常见?我从 20 年 11 月开始学习编码,所以我是个新手。我从在线课程中学习了基础知识......直到今天我从未听说过“TryParse”......你怎么说:我只用“Convert”学习了它.到...”
-
我认为任何有常识的人都不会试图捕获解析双精度值的异常。例外是,您猜对了,对于例外情况,未能解析双精度并不是例外情况。此外,您可能知道异常非常慢。
Convert类的主要用途是用于实现IFormattable的类型,您不能真正假设控制台输入本质上是IFormattable。
标签: c# exception formatexception