为什么它不会在异常中写入文件

时间:2011-09-13 01:09:22

标签: c# .net visual-studio-2010 visual-studio-2008

仍有问题

我有以下代码。只要我在试试{}它写得很好。但是当出现错误时,它不会写入日志文件。不确定为什么

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


        }

5 个答案:

答案 0 :(得分:5)

因为你尝试中唯一的东西就是写入流...而这与你在cacth中尝试做的事情是一样的。为什么会有效?

答案 1 :(得分:3)

catch块仅在try块抛出异常时显示(在原始帖子中似乎是拼写错误)。

如果try成功,则永远不会执行catch

如果try失败,那是因为写入日志时必定会出现问题。当catch执行时,该问题很可能仍然存在,因此catch中的日志也将失败。

答案 2 :(得分:1)

好吧,我不知道LJ是什么类型,我当然从未听说过IncalidException。我假设您只是错误地将代码输入编辑器。您应该将其粘贴以避免出现这些类型的错误。

无论如何,有几个选择:

  1. LJ.WriteLine没有抛出异常。
  2. LJ.WriteLine正在抛出一个异常,但与您捕获的类型不同(例如,只看catch { }时它是否有效。)
  3. 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)

你能编译这段代码吗?

我认为有两件事与上述不符。

  1. 它应该是InvalidException而不是IncalidException

        try
        {
            LJ.WriteLine("XXXXXXXXXXXX");
    
        }
        catch (InvalidException e)
        {
            LJ.WriteLine("YYYYYYYYYYYYYYYY");
            Console.WriteLine("Error: {0}", e.Message);
            return;
        }