我正在编写一个实际上将作为ArcGIS中的任务运行的移动应用程序,但我的问题基本上是C#错误处理。我正在使用while
循环来遍历记录并使用StreamWriter
来记录尝试读取数据的失败。我已经将每个字段分成了自己的单独try
catch
,这样我就可以将哪个记录和哪个字段写入日志文件。示例如下。
try
{
TrafficLanesCount = Convert.ToByte(ModifiedFDR.GetValue(ModifiedFDR.GetOrdinal("TRAFICLN")));
}
catch
{
sw.WriteLine(DOTNumber + " " + "TrafficLanesCount");
}
我在while循环结束时保存,但如果有任何失败,我想记录它,跳过该记录,继续下一条记录。有谁知道这样做的方法?
答案 0 :(得分:1)
而不是
sw.WriteLine(DOTNumber + " " + "TrafficLanesCount");
您可以使用
File.AppendAllText("path/to/log.txt", DOTNumber + " " + "TrafficLanesCount" + nvironment.NewLine);
实时编写行。这样,您的日志将保留在每个catch中。
答案 1 :(得分:0)
使用提供的代码,我会选择以下内容:
var errorList = new List<Exception>();
foreach(var record in records)
{
try
{
try
{
TrafficLanesCount = Convert.ToByte(ModifiedFDR.GetValue(ModifiedFDR.GetOrdinal("TRAFICLN")));
}
catch
{
throw new Exception(new string(DOTNumber + " " + "TrafficLanesCount"));
}
}
catch (Exception exp)
{
errorList.Add(exp);
}
}
然后,你可以遍历列表中的异常并在那时处理它们。