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
Empfohlene Maßnahme
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.
}