BinaryFormatter.Deserialize ponownie opakowuje niektóre wyjątki w serializacjiException
Metoda BinaryFormatter.Deserialize teraz ponownie opakowuje niektóre obiekty wyjątków wewnątrz obiektu SerializationException przed propagacją wyjątku z powrotem do obiektu wywołującego.
Opis zmiany
BinaryFormatter.Deserialize Wcześniej metoda zezwalała na niektóre dowolne wyjątki, takie jak ArgumentNullException, w celu propagowania stosu do jego obiektów wywołujących.
W programie .NET 5 lub nowszym BinaryFormatter.Deserialize metoda bardziej agresywnie przechwytuje wyjątki występujące z powodu nieprawidłowych operacji deserializacji i opakowuje je w obiekcie SerializationException.
Wprowadzona wersja
5,0
Zalecana akcja
W większości przypadków nie trzeba podejmować żadnych działań. Jeśli jednak lokacja wywołania zależy od określonego wyjątku, możesz odpakować wyjątek z zewnętrznego SerializationExceptionobiektu , jak pokazano w poniższym przykładzie.
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.
}