为什么它不在异常中写入文件
本文关键字:文件 异常 为什么 | 更新日期: 2023-09-27 18:08:18
仍有问题
我有下面的代码。只要我在try{}中,它就写得很好。但是当出现错误时,它不会写入日志文件。不知道为什么
private static void jk(string kName, string path)
{
Job job;
try
{
// run some functions here and then write to the file
StreamWriter LJ = new StreamWriter("C:''Lob.txt");
LJ.WriteLine("XXXXXXXXXXXX");
LJ.Close();
}
catch (InvalidException)
{
StreamWriter LJ = new StreamWriter("C:''Lob.txt");
LJ.WriteLine("YYYYYYYYYYYYYYYY");
LJ.Close();
Console.WriteLine("Error: ");
return;
}
}
因为在你的尝试中唯一的事情是写入流…这和你在缓存中要做的是一样的。为什么会这样呢?
catch
块只在try
块抛出异常时执行(这似乎是原始帖子中的错别字)。
如果try
成功,则catch
不执行。
如果try
失败,那一定是因为在写入日志时发生了问题。当catch
执行时,这个问题很可能仍然存在,因此catch
中的日志也将失败。
嗯,我不知道LJ
是什么类型,我当然从来没有听说过IncalidException
。我假定您只是在编辑器中输入了错误的代码。你应该直接粘贴进来,以避免这些类型的错误。
无论如何,这里有几个选项:
-
LJ.WriteLine
没有抛出异常 -
LJ.WriteLine
抛出异常,但不是你正在捕获的类型(即,当你只是catch { }
时,看看它是否有效)。 - 第二次调用
LJ.WriteLine
也抛出一个异常,你正在捕捉(也许吞下)它进一步向上的堆栈。
与您的评论:
尝试失败,因为一些其他问题,但我正试图记录它放入文件
我假设异常不是由LJ.WriteLine("XXXXXXXXXXXX");
如果是这种情况,您可能只需要刷新StreamWriter。尝试在using块中声明LJ:
using (StreamWriter LJ = new StreamWriter("C:''Lob.txt"))
{
LJ.WriteLine("XXXXXXXXXXXX");
try
{
...
LJ.WriteLine("XXXXXXXXXXXX");
}
catch (InvalidException)
{
LJ.WriteLine("YYYYYYYYYYYYYYYY");
Console.WriteLine("Error: ");
return;
}
}
你能编译这段代码吗?
我认为上面有两件事不正确。
-
应该是invalideception而不是IncalidException
try { LJ.WriteLine("XXXXXXXXXXXX"); } catch (InvalidException e) { LJ.WriteLine("YYYYYYYYYYYYYYYY"); Console.WriteLine("Error: {0}", e.Message); return; }