BinaryFormatter.Deserialize 重新包裝 SerializationException 中的一些例外狀況
BinaryFormatter.Deserialize 方法現在會在 SerializationException 中重新包裝一些例外狀況物件,再將例外狀況傳播回呼叫端。
變更描述
先前,BinaryFormatter.Deserialize 方法允許某些任意例外狀況,例如 ArgumentNullException,將堆疊傳播至其呼叫端。
在 .NET 5 和更新版本中,BinaryFormatter.Deserialize 方法會更積極攔截因無效還原序列化作業而發生的例外狀況,並將其包裝在 SerializationException 中。
導入的版本
5.0
建議的動作
多數情況中,您將不需要採取任何動作。 不過,如果您的呼叫網站相依於擲回的特定例外狀況,您可以從外部 SerializationException 解除包裝例外狀況,如下列範例所示。
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.
}