Постоянная ошибка при десериализации - C#

Узнай цену своей работы

Формулировка задачи:

Пишу свою игрушку. Сделал загрузку через десериализацию класса из xml. Вот код:
Листинг программы
  1. public Hero Load_Hero()
  2. {
  3. try
  4. {
  5. Hero newPerson = null;
  6. XmlSerializer formatter = new XmlSerializer(typeof(Hero));
  7. using (FileStream fs = new FileStream("SavedHeroes.xml", FileMode.OpenOrCreate))
  8. {
  9. try
  10. {
  11. try { newPerson = (Hero)formatter.Deserialize(fs); }
  12. catch (System.InvalidOperationException) {
  13. Console.WriteLine("Ошибка! Сохранение героя не найденою Создайте нового героя.");
  14. Console.ReadLine();
  15. Console.Clear();
  16. return null;
  17. }
  18. Console.WriteLine("Объект загружен");
  19. Console.WriteLine("Имя героя -- {0}", newPerson.Name);
  20. Console.WriteLine();
  21. Console.ReadLine();
  22. Console.Clear();
  23. return newPerson;
  24. } catch (System.InvalidOperationException)
  25. {
  26. Console.WriteLine("Ошибка! Сохранение героя не найденою Создайте нового героя.");
  27. Console.ReadLine();
  28. Console.Clear();
  29. return null;
  30. }
  31. }
  32. }
  33. catch (System.InvalidOperationException)
  34. {
  35. Console.WriteLine("Ошибка! Сохранение героя не найденою Создайте нового героя.");
  36. Console.ReadLine();
  37. Console.Clear();
  38. return null;
  39. }
  40. }
Да, я обернул в try-catch все. Но все равно на строке 11 вылезает ошибка System.InvalidOperationException, тк файл пустой. Помогите пожалуйста P.s. Иногда еще при сохранение героя в xml в самом конце почемуто добавляется лишняя >, я тоже не могу понять почему

Решение задачи: «Постоянная ошибка при десериализации»

textual
Листинг программы
  1. public Hero Load_Hero()
  2. {
  3.     const string savePath = "SavedHeroes.xml";
  4.     Hero newPerson = null;
  5.     if (File.Exists(savePath))
  6.     {
  7.         XmlSerializer formatter = new XmlSerializer(typeof(Hero));
  8.         try
  9.         {
  10.             using (FileStream fs = new FileStream(savePath, FileMode.Open, FileAccess.Read))
  11.             {
  12.                 newPerson = (Hero)formatter.Deserialize(fs);
  13.             }
  14.         }
  15.         catch
  16.         {
  17.         }
  18.     }
  19.  
  20.     if (newPerson != null)
  21.     {
  22.         Console.WriteLine("Объект загружен");
  23.         Console.WriteLine("Имя героя -- {0}", newPerson.Name);
  24.         Console.WriteLine();
  25.     }
  26.     else
  27.     {
  28.         Console.WriteLine("Ошибка! Сохранение героя не найденою Создайте нового героя.");
  29.     }
  30.     Console.ReadLine();
  31.     Console.Clear();
  32.  
  33.     return newPerson;
  34. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы