Метод BinaryFormatter.Deserialize повторно изолирует некоторые исключения в классе SerializationException
Метод BinaryFormatter.Deserialize теперь заключает некоторые объекты исключений в SerializationException перед передачей исключения обратно вызывающему объекту.
Описание изменения
Ранее метод BinaryFormatter.Deserialize позволял использовать некоторые произвольные исключения, например ArgumentNullException, для передачи стека соответствующим вызывающим объектам.
В .NET 5 и более поздних версиях метод BinaryFormatter.Deserialize более агрессивно перехватывает исключения, вызываемые из-за недопустимых операций десериализации, и заключает их в SerializationException.
Представленные версии
5,0
Рекомендуемое действие
В большинстве случаев никаких дополнительных действий от вас не требуется. Но если место вызова зависит от конкретного исключения, вы можете исключить его из SerializationException, как показано в следующем примере.
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.
}