Dela via


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

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

Berörda API:er