Freigeben über


BinaryFormatter.Deserialize umschließt einige Ausnahmen in SerializationException erneut

Die BinaryFormatter.Deserialize-Methode umschließt jetzt einige Ausnahmeobjekte innerhalb einer SerializationException erneut, bevor die Ausnahme an den Aufrufer zurückgegeben wird.

Änderungsbeschreibung

Bisher erlaubte die BinaryFormatter.Deserialize-Methode die Weitergabe einiger zufälliger Ausnahmen, wie z. B. ArgumentNullException den Stapel entlang zu den Aufrufern.

In .NET 5 und höher fängt die BinaryFormatter.Deserialize-Methode Ausnahmen aufgrund von ungültigen Deserialisierungsvorgängen aggressiver ab und umschließt sie in einer SerializationException.

Eingeführt in Version

5.0

In denen meisten Fällen müssen Sie keine Maßnahmen ergreifen. Wenn es für Ihre Aufrufsite jedoch erforderlich ist, dass eine bestimmte Ausnahme ausgelöst wird, können Sie die Umschließung der Ausnahme in der äußeren SerializationException aufheben, wie im folgenden Beispiel gezeigt.

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.
}

Betroffene APIs