В .NET 5 и более поздних версиях метод BinaryFormatter.Deserialize более агрессивно перехватывает исключения, вызываемые из-за недопустимых операций десериализации, и заключает их в SerializationException.
Представленные версии
5,0
Рекомендуемое действие
В большинстве случаев никаких дополнительных действий от вас не требуется. Но если место вызова зависит от конкретного исключения, вы можете исключить его из SerializationException, как показано в следующем примере.
C#
Stream inputStream = GetInputStream();
var formatter = new BinaryFormatter();
try
{
object deserialized = formatter.Deserialize(inputStream);
}
catch (MyException myEx)
{
// Handle 'myEx' here in case it was thrown directly.
}
catch (SerializationException serEx) when (serEx.InnerException is MyException myEx)
{
// Handle 'myEx' here in case it was wrapped in SerializationException.
}
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Присоединитесь к серии встреч для создания масштабируемых решений искусственного интеллекта на основе реальных вариантов использования с другими разработчиками и экспертами.
В этом модуле рассматривается использование исключений и процесса обработки исключений в консольных приложениях C#. Практические действия обеспечивают реализацию шаблонов обработки исключений для различных сценариев программирования.
Сведения о критическом изменении .NET 5 в основных библиотеках .NET, где методы сериализации и десериализации BinaryFormatter, Formatter и IFormatter устарели.