Muthu Raman Ответов: 1

Мой метод наблюдения за ошибками под названием выдает исключение. Какая-нибудь помощь, пожалуйста?


Здравствуйте друзья,

Я пытаюсь извлечь и передать только элементы каталога из моего xml-файла наблюдателю ошибок в виде строки с фильтром. Но затем я передаю найденный путь по имени в наблюдатель ошибок в виде строки. Я получаю исключение. Код непосредственно перемещается на блок catch. Любая помощь будет оценена по достоинству.

Спасибо заранее.

Что я уже пробовал:

public string[] Create(string settingsFile)
            {
                string FilePath = settingsFile;
                settingsFile = "my path/directory of the xml file";
                string[] a = new string[20];

                XmlTextReader xmlReader = new XmlTextReader(settingsFile);
                try
                {
                    while (xmlReader.Read())
                    {
                        switch (xmlReader.Name)
                        {
                            case "InputDataPath":
                                a[0] = xmlReader.ReadString();
                                ErrorWatcher(a[0], "Status.error");
                                continue;
                            case "BackupDataPath":
                                a[1] = xmlReader.ReadString();
                                ErrorWatcher(a[1], "Status.error");
                                continue;
                            case "ExportDatapath":
                                a[2] = xmlReader.ReadString();
                                ErrorWatcher(a[2], "Status.error");
                                continue;
                        }

                    }

                }
                catch (Exception e)
                {
                    return null;
                }
                return a;
                
            }

Karthik_Mahalingam

что такое сообщение об ошибке?

Muthu Raman

Я не дать какие-либо конкретные сообщения об ошибке Картик. Непосредственно переходит в блок catch без выполнения метода после получения значений.

Karthik_Mahalingam

поместите точку останова внутри блока catch и посмотрите значение в "e"

Muthu Raman

Мне пришлось изменить "\\" на "\". Вопрос решен!!!
Спасибо, Картик.

Karthik_Mahalingam

добро пожаловать

1 Ответов

Рейтинг:
7

OriginalGriff

Начните с использования отладчика: поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.
Начните с просмотра пути, по которому вы проходите: если это папка, это не сработает.
Если это выглядит нормально - и файл существует - шагайте дальше, пока не произойдет ошибка. Затем посмотрите на детали исключения, чтобы узнать, почему оно исключено - обычно там есть очень полезная информация! Вероятно, файл плохой, и читатель XML выбрасывает исключение за пределы вашего блока try.

Извините, но мы не можем сделать это за вас - пришло время вам освоить новый (и очень, очень полезный) навык: отладку!

И сделайте себе пару одолжений: регистрируйте исключения, а не просто игнорируйте их и возвращайте null - когда вы это делаете, вы понятия не имеете, что это была за ошибка, поэтому ее трудно исправить.
И закройте свой XML - ридер, когда вы закончите с ним (блок using-самый простой способ) - если вы этого не сделаете, он останется открытым до тех пор, пока сборщик мусора не закроет его для вас или ваше приложение не выйдет, в зависимости от того, что наступит раньше.