Share via


BinaryFormatter.Deserialize가 SerializationException에서 일부 예외를 다시 래핑

이제 BinaryFormatter.Deserialize 메서드는 예외를 호출자에게 전파하기 전에 SerializationException 내부에서 일부 예외 개체를 다시 래핑합니다.

변경 내용 설명

이전에는 BinaryFormatter.Deserialize 메서드가 ArgumentNullException 같은 임의 예외에서 스택을 호출자에게 전파하도록 허용했습니다.

.NET 5 이상에서 BinaryFormatter.Deserialize 메서드는 잘못된 deserialization 작업으로 인해 발생하는 예외를 더 적극적으로 catch하여 SerializationException에 래핑합니다.

도입된 버전

5.0

대부분의 경우 아무 작업도 수행할 필요가 없습니다. 그러나 호출 사이트가 throw되는 특정 예외에 종속된 경우 다음 예제와 같이 외부 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.
}

영향을 받는 API