0

我正在尝试为数据表中的每个数据行调用 2 个存储过程。当这些 Sp 发生异常时,我试图捕获异常并发送到文件。

StreamWriter file = new StreamWriter(@"c:\Error.txt",false);
foreach (DataRow row in dt.Rows)
{
    try
    {
        UpdateEvent(LN);
    }
    catch (Exception e)
    {

        //continue; 
    }

    try
    {
        insertevent(LN, note);
    }
    catch (Exception e)
    {

    }

    foreach (string line in error)
    {
        file.WriteLine(line);      
    }   
}

我可以从列表中删除该行吗..它被写入文件..这样它就不会再次打印到文件中。我尝试了 error.remove(line)...但它没有用..

我也将错误归档为...下面..

我可以将其格式化为简单的两行吗?

4

3 回答 3

0

您必须从第一个循环退出循环。

StreamWriter file = new StreamWriter(@"c:\Error.txt",false);
List<string> error = new List<string>();
          foreach (DataRow row in dt.Rows)
          {
                        try
                        {
                            UpdateEvent(LN);
                        }
                        catch (Exception e)
                        {
                            error.Add(String.Format("Exception for Loan Number {0} with a Error {1}", row["LN"].ToString(), e.ToString()));
                            //continue; 
                         }
                        try
                        {
                            insertevent(LN, note);
                        }
                        catch (Exception e)
                        {
                            error.Add(String.Format("Exception for Loan Number {0} with a Error {1}", row["LN"].ToString(), e.ToString()));
                            //continue; 
                         }
            }

            foreach (string line in error)
            {
                file.WriteLine(line);
            }
于 2012-08-06T15:52:15.213 回答
0

您可以使用 Enterprise 库更轻松地完成此操作,并且它更可定制。

于 2012-08-06T15:52:23.517 回答
0

如果我正确理解了您的问题,请在异常之间的文件中添加一行:

 foreach (string line in error)
 {
    file.WriteLine(line);
    file.WriteLine();  //write blank line
 }

此外,在循环完成后,将文件写入循环之外。然后你的文件中不会有重复的行。

于 2012-08-06T15:49:22.870 回答