Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La méthode BinaryFormatter.Deserialize encapsule désormais certains objets d’exception à l’intérieur d’un SerializationException avant de propager l’exception à l'appelant.
Description de la modification
Auparavant, la méthode BinaryFormatter.Deserialize autorisait certaines exceptions aléatoires, telles que ArgumentNullException, à se propager dans la pile jusqu'à ses appelants.
Dans .NET 5 et versions ultérieures, la BinaryFormatter.Deserialize méthode intercepte plus agressivement les exceptions qui se produisent en raison d’opérations de désérialisation non valides et les encapsule dans un SerializationException.
Version introduite
5,0
Action recommandée
Dans la plupart des cas, vous n’avez pas besoin d’effectuer d’action. Toutefois, si votre site d’appel dépend d’une exception particulière levée, vous pouvez désenvelopper l’exception de SerializationException externe, comme illustré dans l’exemple suivant.
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.
}