仍有问题
我有以下代码。只要我在试试{}它写得很好。但是当出现错误时,它不会写入日志文件。不确定为什么
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;
}
}
答案 0 :(得分:5)
因为你尝试中唯一的东西就是写入流...而这与你在cacth中尝试做的事情是一样的。为什么会有效?
答案 1 :(得分:3)
catch
块仅在try
块抛出异常时显示(在原始帖子中似乎是拼写错误)。
如果try
成功,则永远不会执行catch
。
如果try
失败,那是因为写入日志时必定会出现问题。当catch
执行时,该问题很可能仍然存在,因此catch
中的日志也将失败。
答案 2 :(得分:1)
好吧,我不知道LJ
是什么类型,我当然从未听说过IncalidException
。我假设您只是错误地将代码输入编辑器。您应该将其粘贴以避免出现这些类型的错误。
无论如何,有几个选择:
LJ.WriteLine
没有抛出异常。LJ.WriteLine
正在抛出一个异常,但与您捕获的类型不同(例如,只看catch { }
时它是否有效。)LJ.WriteLine
的第二次调用也引发了异常,你正在捕捉(并且可能吞咽)它进一步上升。答案 3 :(得分:1)
发表评论:
尝试失败,因为其他一些问题,但我正在尝试记录它 进入文件
我认为LJ.WriteLine("XXXXXXXXXXXX");
如果是这种情况,您可能只需要刷新StreamWriter。尝试在这样的使用块中声明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;
}
}
答案 4 :(得分:-1)
你能编译这段代码吗?
我认为有两件事与上述不符。
它应该是InvalidException而不是IncalidException
try
{
LJ.WriteLine("XXXXXXXXXXXX");
}
catch (InvalidException e)
{
LJ.WriteLine("YYYYYYYYYYYYYYYY");
Console.WriteLine("Error: {0}", e.Message);
return;
}