BinaryFormatter.Deserialize skriver om några undantag i SerializationException
Metoden BinaryFormatter.Deserialize skriver nu om vissa undantagsobjekt i en SerializationException innan undantaget sprids tillbaka till anroparen.
Ändra beskrivning
BinaryFormatter.Deserialize Tidigare tillät metoden vissa godtyckliga undantag, till exempel ArgumentNullException, att sprida stacken till dess anropare.
I .NET 5 och senare BinaryFormatter.Deserialize fångar metoden mer aggressivt undantag som inträffar på grund av ogiltiga deserialiseringsåtgärder och omsluter dem i en SerializationException.
Version introducerad
5,0
Rekommenderad åtgärd
I de flesta fall behöver du inte vidta några åtgärder. Men om din anropswebbplats är beroende av att ett visst undantag utlöses kan du ta bort undantaget från det yttre SerializationException, som du ser i följande exempel.
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.
}