почему он не записывает в файл в исключение - PullRequest
0 голосов
/ 13 сентября 2011

все еще создает проблему

У меня есть следующий код.Пока я в 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;
            }


        }

Ответы [ 5 ]

5 голосов
/ 13 сентября 2011

Потому что единственное, что вы пытаетесь сделать, - это записать в поток ... и это то же самое, что вы пытаетесь сделать в кактусе.Почему это работает?

3 голосов
/ 13 сентября 2011

Блок catch выполняется только в том случае, если блок try выдает исключение (что в оригинальном сообщении является опечаткой).

Если try завершается успешно, catchникогда не выполняется.

Если try завершается неудачей, это из-за проблемы, которая должна была возникнуть при записи в журнал.Когда выполняется catch, эта проблема, скорее всего, все еще существует, поэтому журнал в catch также не будет работать.

1 голос
/ 13 сентября 2011

С вашим комментарием:

попытка не удалась из-за некоторых других проблем, но я пытаюсь записать ее в файл

Я предполагаю, что исключение не выброшенона 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;
    }
}
1 голос
/ 13 сентября 2011

Ну, я не знаю, что типа LJ, и я, конечно, никогда не слышал о IncalidException.Я предполагаю, что вы просто ввели код в редактор неправильно.Вы должны просто вставить его, чтобы избежать ошибок такого типа.

В любом случае, есть несколько вариантов:

  1. LJ.WriteLine не вызывает исключение.
  2. LJ.WriteLine вызывает исключение, но не того типа, который вы ловите (т. Е. Посмотрите, работает ли оно, когда вы просто catch { }).
  3. Второй вызов LJ.WriteLine также вызываетисключение, и вы ловите (и, возможно, глотаете) его дальше вверх по стеку.
0 голосов
/ 13 сентября 2011

Можете ли вы скомпилировать этот код?

Есть две вещи, которые я вижу неправильно с выше.

  1. Это должно быть InvalidException, а не IncalidException

        try
        {
            LJ.WriteLine("XXXXXXXXXXXX");
    
        }
        catch (InvalidException e)
        {
            LJ.WriteLine("YYYYYYYYYYYYYYYY");
            Console.WriteLine("Error: {0}", e.Message);
            return;
        }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...