Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El BinaryFormatter.Deserialize método ahora vuelve a encapsular algunos objetos de excepción dentro de un SerializationException antes de propagar la excepción de nuevo al llamador.
Descripción del cambio
Anteriormente, el método BinaryFormatter.Deserialize permitía que algunas excepciones arbitrarias, como ArgumentNullException, se propagaran arriba de la pila a sus autores de la llamada.
En .NET 5 y versiones posteriores, el BinaryFormatter.Deserialize método detecta de forma más agresiva las excepciones que se producen debido a operaciones de deserialización no válidas y las encapsula en .SerializationException
Versión introducida
5.0
Acción recomendada
En la mayoría de los casos, no es necesario realizar ninguna acción. Sin embargo, si el sitio de llamada depende de que se inicie una excepción determinada, puede desencapsular la excepción de la excepción SerializationException externa, como se muestra en el ejemplo siguiente.
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.
}