我正在创建一个Windows表单,使用String.Compare按顺序搜索3个文件。如果文本框不为空,它将首先按文本框字符串搜索,如果它是空的,则它将按公司字符串搜索。包含数字的文件有一些“损坏”的行ex。 1345.2fd我想通过让它们作为“Sales Figure corrupted”出来来处理这些问题,但是当我运行程序时,我得到输入字符串错误。
该行是42
salesData = decimal.Parse(salesFile.ReadLine().Trim());
答案 0 :(得分:1)
您必须检查salesFile.ReadLine()
是否为空。
decimal salesData = 0;
string s = salesFile.ReadLine();
if (s != null && decimal.TryParse(s.Trim(), out salesData))
{
// True
}
else
{
//Your data is error
}
另外:这也可以产生错误,因为你不检查null:
gamesData = gamesFile.ReadLine().Trim(); // <---- May cause Error
salesData = decimal.Parse(salesFile.ReadLine().Trim()); // <---- May cause Error
compData = compFile.ReadLine().Trim(); // <---- May cause Error
答案 1 :(得分:0)
我认为你的问题是由decimal.Parse()函数触发的FormatException。该函数除了数字,但您的格式错误的字符串不是真正的数字,因此抛出异常。您最好使用try-catch并处理错误 参考:https://msdn.microsoft.com/en-us/library/cafs243z(v=vs.110).aspx