Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O BinaryFormatter.Deserialize método agora reembrulha alguns objetos de exceção dentro de um SerializationException antes de propagar a exceção de volta para o chamador.
Descrição da alteração
Antes, o método BinaryFormatter.Deserialize permitia que algumas exceções arbitrárias, como ArgumentNullException, propagassem a pilha para seus chamadores.
No .NET 5 e posterior, o método BinaryFormatter.Deserialize captura exceções de operações de desserialização inválidas de forma mais agressiva e as encapsula em um SerializationException.
Versão introduzida
5,0
Ação recomendada
Na maioria dos casos, você não precisa tomar nenhuma ação. No entanto, se o site da chamada depender da geração de uma exceção específica, você poderá desencapsular a exceção da SerializationException exterior, conforme é mostrado no exemplo a seguir.
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.
}