C#,While循环,尝试抓取,记录,继续

时间:2016-05-25 12:33:57

标签: c# logging while-loop try-catch continue

我正在编写一个实际上将作为ArcGIS中的任务运行的移动应用程序,但我的问题基本上是C#错误处理。我正在使用while循环来遍历记录并使用StreamWriter来记录尝试读取数据的失败。我已经将每个字段分成了自己的单独try catch,这样我就可以将哪个记录和哪个字段写入日志文件。示例如下。

try
{
    TrafficLanesCount = Convert.ToByte(ModifiedFDR.GetValue(ModifiedFDR.GetOrdinal("TRAFICLN")));
}
catch
{
    sw.WriteLine(DOTNumber + " " + "TrafficLanesCount");
}

我在while循环结束时保存,但如果有任何失败,我想记录它,跳过该记录,继续下一条记录。有谁知道这样做的方法?

2 个答案:

答案 0 :(得分:1)

而不是

sw.WriteLine(DOTNumber + " " + "TrafficLanesCount");

您可以使用

File.AppendAllText("path/to/log.txt", DOTNumber + " " + "TrafficLanesCount" + nvironment.NewLine);

实时编写行。这样,您的日志将保留在每个catch中。

我还想指出,有非常成熟的Logging for Logging。例如NLogLog4net来命名两个更受欢迎的广告。

答案 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);
    }
}

然后,你可以遍历列表中的异常并在那时处理它们。