Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 记录错误,然后打印出来 List errorLog=new List(); foreach(目录中的DirectoryInfo目录) { 尝试 { 直接删除(正确); } 捕获(System.IO.IOException msg) { 代码=5; Add(String.Concat(dir.FullName,“,msg.Message)); WriteLine(“删除目录{0}时出错”,dir.FullName); } }_C#_Error Handling_Try Catch - Fatal编程技术网

C# 记录错误,然后打印出来 List errorLog=new List(); foreach(目录中的DirectoryInfo目录) { 尝试 { 直接删除(正确); } 捕获(System.IO.IOException msg) { 代码=5; Add(String.Concat(dir.FullName,“,msg.Message)); WriteLine(“删除目录{0}时出错”,dir.FullName); } }

C# 记录错误,然后打印出来 List errorLog=new List(); foreach(目录中的DirectoryInfo目录) { 尝试 { 直接删除(正确); } 捕获(System.IO.IOException msg) { 代码=5; Add(String.Concat(dir.FullName,“,msg.Message)); WriteLine(“删除目录{0}时出错”,dir.FullName); } },c#,error-handling,try-catch,C#,Error Handling,Try Catch,对于每个循环,我都有一个,它将遍历目录列表并删除它们,但保留父目录。如果发生错误,我想记录它。我创建了一个列表,并在捕获中添加错误。最后,我可以检查错误日志列表的长度,如果它大于零,我可以打印它们。我见过一些帖子,他们在catch中使用和streamwriter调用,但是如果在编写错误日志时发生了什么情况呢 我所做的被认为是坏习惯吗?如果是这样,我该怎么办?我想你的想法是对的。有很多解决方案,但最近我尝试将控制台输出重新路由到文件,效果非常好。关于您的解决方案,它看起来像: List<st

对于每个循环,我都有一个
,它将遍历目录列表并删除它们,但保留父目录。如果发生错误,我想记录它。我创建了一个
列表
,并在
捕获
中添加错误。最后,我可以检查错误日志列表的长度,如果它大于零,我可以打印它们。我见过一些帖子,他们在catch中使用
streamwriter
调用
,但是如果在编写错误日志时发生了什么情况呢


我所做的被认为是坏习惯吗?如果是这样,我该怎么办?

我想你的想法是对的。有很多解决方案,但最近我尝试将控制台输出重新路由到文件,效果非常好。关于您的解决方案,它看起来像:

List<string> errorLog = new List<string>();

foreach (DirectoryInfo dir in directories)
{
    try
    {
        dir.Delete(true);
    }
    catch (System.IO.IOException msg)
    {
        code = 5;
        errorLog.Add(String.Concat(dir.FullName, " ", msg.Message));
        Console.WriteLine("Error Removing the directory: {0}", dir.FullName);
    }
}

finally块确保如果发生任何未处理的事情,流和文件仍将关闭。

登录到控制台并不好,我至少会登录到文本文件。您正在开发什么类型的应用程序?如果它是一个基于web的应用程序,我会使用log4net或类似的日志包。如果你有可用的数据库,我会登录到数据库。记录到文件或数据库会使查看日志变得容易得多,在一天结束时,您创建日志以在出现问题时查看日志,这样做越快越好。@JeffFinn-一个简单的命令行应用程序。我不输出到文本文件。完成for each后,如果errorlog大于0,我将写入一个文本文件。我习惯于使用
using
语句,但我知道您的想法,谢谢
try
{
    FileStream oStream;
    StreamWriter sWriter;
    var oldOut = Console.Out;
    var desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
    const string outputFileName = "\\errorlog.txt";
    var fullPath = string.Concat(desktopPath, outputFileName);
    Console.SetOut(sWriter);

    foreach (DirectoryInfo dir in directories)
    {
       try
       {
           dir.Delete(true);
       }
       catch(System.IO.IOException msg)
       {
           code = 5;
           errorLog.Add(String.Concat(dir.FullName," ",msg.Message));
           Console.WriteLine("Error Removing the directory: {0}", dir.FullName);
       }
    }
}
catch(Exception e)
{
    //handle error with streams or file
}
finally
{
    //ensures that we close the connections and such
    Console.SetOut(oldOut);
    sWriter.Close();
    oStream.Close();
}