C# 未处理格式异常错误

C# 未处理格式异常错误,c#,string,exception,unhandled,C#,String,Exception,Unhandled,我在跑步时遇到了一个奇怪的错误,我想不出来。当我在Visual Studio中时,在运行程序之前不会抛出任何错误。然而,当我运行它时,我得到一个错误,指出类型上存在未处理的异常。这与将字段[0]转换为int有关,有什么建议吗 empReader = new StreamReader(fileName); while (empReader.Peek() > -1) { string li

我在跑步时遇到了一个奇怪的错误,我想不出来。当我在Visual Studio中时,在运行程序之前不会抛出任何错误。然而,当我运行它时,我得到一个错误,指出类型上存在未处理的异常。这与将字段[0]转换为int有关,有什么建议吗

empReader = new StreamReader(fileName);

                while (empReader.Peek() > -1)
                {
                    string line = empReader.ReadLine();   //read a line from the text file
                    string[] fields = line.Split(',');

                    int idCheck = Convert.ToInt32(fields[0]);

                    empTempId.Add(idCheck);
                }

                empReader.Close();

如果不确定该值是否为整数,请改用
int.TryParse

int idCheck;

if (int.TryParse(fields[0], out idCheck))
    empTempId.Add(idCheck);

这可以通过尝试转换来防止运行时异常,如果无法转换,则返回
false

您可以将其包装在try/catch块中

try {
         int idCheck = Convert.ToInt32(fields[0]);
        Console.WriteLine("{0} --> {1}", fields[0], idCheck);
     }
catch (FormatException) {
        Console.WriteLine("{0}: Bad Format", fields[0]);
     }   
catch (OverflowException) {
        Console.WriteLine("{0}: Overflow", fields[0]);   
     }  

有几个问题:1)什么是“字段[0]”(它是一种有效的格式(,2)“字段[0]”是否存在?尽管如此,代码假定无论“ReadLine()”返回什么,它都将是一个字符串,可以拆分为至少一个逗号分隔的元素。这很糟糕……您可以将其包装在try/catch块中。