Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il BinaryFormatter.Deserialize metodo ora reimpacchetta alcuni oggetti eccezione all'interno di un SerializationException prima di propagare nuovamente l'eccezione al chiamante.
Descrizione delle modifiche
In precedenza, il metodo BinaryFormatter.Deserialize consentiva la propagazione di alcune eccezioni arbitrarie, come ArgumentNullException, lungo lo stack fino ai chiamanti.
In .NET 5 e versioni successive, il metodo BinaryFormatter.Deserialize rileva in modo più aggressivo le eccezioni che si verificano a causa di operazioni di deserializzazione non valide e le incapsula in un oggetto SerializationException.
Versione introdotta
5.0
Azione consigliata
Nella maggior parte dei casi, non è necessario eseguire alcuna azione. Tuttavia, se il sito di chiamata dipende da una particolare eccezione generata, è possibile annullare il wrapping dell'eccezione dall'esterno SerializationException, come illustrato nell'esempio seguente.
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.
}