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