在对象初始化时尝试Catch

本文关键字:Catch 对象 初始化 | 更新日期: 2023-09-27 18:09:44

我正在阅读包含日期文件的CSV文件我怎么能忽略异常时,试图转换为日期时间?

        var csvlines = File.ReadAllLines(FilePath);    
        // skip the first line!
        var csvLinesData = csvlines.Skip(1).Select(l => l.Split(Consts.Delimiter)); 
        return csvLinesData.Select(data => new ReleaseNote
        {
            Version = data[0],
            ReleaseDate = Convert.ToDateTime(data[1]) // Possible exception
        }).ToList();

在对象初始化时尝试Catch

return csvLinesData.Select(data => {
   DateTime d;
   return new ReleaseNote
   {
     Version = data[0],
     ReleaseDate = DateTime.TryParse(data[1], out d) ? d : DateTime.MinValue
   }
}).ToList();

如果你的ReleaseDate属性是空的,你也可以用null代替DateTime.MinValue

你应该使用DateTime。TryParse:

https://msdn.microsoft.com/en-us/library/ch92fbc1 (v = vs.110) . aspx

foreach (string dateString in dateStrings)
  {
     if (DateTime.TryParse(dateString, out dateValue)) 
        Console.WriteLine("  Converted '{0}' to {1} ({2}).", dateString, 
                          dateValue, dateValue.Kind);
     else
        Console.WriteLine("  Unable to parse '{0}'.", dateString);
  }