XmlSerializer: исключение внутри установщика свойств перехвачено в .NET 2.0, но не в 4.0 - PullRequest
2 голосов
/ 25 мая 2011

Я не могу найти ответ на этот вопрос.Надеюсь, что кто-нибудь может помочь.

У меня есть установщик свойства, который выдает исключение, если значение не соответствует определенным условиям.Класс, в котором находится свойство, сериализуется / десериализуется.

При десериализации класса в .NET 2.0 возникает исключение.Если я изменю цель проекта на .NET 4.0, исключение не будет поймано!

Есть идеи?

Спасибо, Сэм


Извините.Под «исключением» я имею в виду тот, который я выбрасываю.Вот пример кода.

Это пример класса, который я хочу сериализовать / десериализовать:

public class MyClass
{
    public string Name
    {
        get{return myName;}
        set
        {
            if (value == "") throw new Exception("Name is blank!");
            myName = value;
        }
    }

    private string myName;
}

А вот код, который вызывает десериализатор.

        try
        {
            XmlSerializer xs = new XmlSerializer(typeof(MyClass));
            using (FileStream stream = File.OpenRead("myclass.xml"))
            {
                MyClass mc = xs.Deserialize(stream) as MyClass;
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

Вот файл «myclass.xml» для проверки исключения.

<?xml version="1.0"?>
<MyClass>
  <Name></Name>
</MyClass>

Использование .NET 2.0 Я получаю окно сообщения с сообщением об исключении.Используя .NET 4.0, я получаю «Исключение, не обработанное кодом пользователя».

Спасибо,

Сэм

1 Ответ

0 голосов
/ 25 мая 2011

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

  • Отладка
    • Исключения ...
      • Снимите флажок "Пользователь не обработан" для "Общеязыковые исключения во время выполнения ".

Disable exception handling

Вы можете отключить это для конкретного исключения, которое вы вызываете, если вам нужногранулярность.

Обратите внимание, что это следует рассматривать только как временное решение.Как правило, вы захотите поставить эту галочку, поскольку это действительно полезная помощь в отладке!

...