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

Tidigare tillät metoden vissa godtyckliga undantag, såsom BinaryFormatter.Deserialize, att sprida sig upp i stacken till sina anropare.

I .NET 5 och senare fångar metoden mer aggressivt undantagen som inträffar på grund av ogiltiga deserialiseringsoperationer och omsluter dem i en BinaryFormatter.Deserialize.

Version lanserad

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