【问题标题】:Write Exception to a file将异常写入文件
【发布时间】:2012-08-06 15:45:40
【问题描述】:

我正在尝试为数据表中的每个数据行调用 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)...但它没有用..

我也将错误归档为 ...below..

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

【问题讨论】:

  • 旁注,看看log4net,将错误记录配置到文件中要容易得多。

标签: c# list foreach sqlexception


【解决方案1】:

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

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

另外,在循环结束后,将文件写入循环之外。这样你的文件中就不会有重复的行了。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 非常感谢..有什么办法可以格式化错误吗?即使我正在格式化...它给出了 10 行错误..进入文件..
    【解决方案3】:

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

    【讨论】:

    • 您可以选择写什么(以编程方式),但您可以使用可视化工具配置哪些类型的异常、写入哪些文件等。如果需要,您也可以创建异常策略并将它们以 AOP 方式应用于您的方法。有用的链接:msdn.microsoft.com/en-us/library/ff664360(v=pandp.50).aspx,网上有更多的样片,你找找看。
    • 好的..当我给 e.message.tostring() 时,我只收到错误消息..而不是所有跟踪..无论如何谢谢..
    猜你喜欢
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 2017-03-07
    • 2015-05-18
    • 2018-09-04
    • 2022-11-14
    相关资源
    最近更新 更多