Bagikan melalui


BinaryFormatter.Deserialize membungkus ulang beberapa pengecualian dalam SerializationException

Metode BinaryFormatter.Deserialize ini sekarang menulis ulang beberapa objek pengecualian di dalam SerializationException sebelum menyebarluaskan pengecualian kembali ke pemanggil.

Deskripsi perubahan

Sebelumnya, metode ini BinaryFormatter.Deserialize mengizinkan beberapa pengecualian semena-mena, seperti ArgumentNullException, untuk menyebarluaskan tumpukan ke pemanggilnya.

Di .NET 5 dan yang lebih baru, BinaryFormatter.Deserialize metode ini lebih agresif menangkap pengecualian yang terjadi karena operasi deserialisasi yang tidak valid dan membungkusnya dalam SerializationException.

Versi yang diperkenalkan

5.0

Dalam kebanyakan kasus, Anda tidak perlu mengambil tindakan apa pun. Namun, jika situs panggilan Anda bergantung pada pengecualian tertentu yang dilemparkan, Anda dapat membongkar pengecualian dari luar SerializationException, seperti yang ditunjukkan dalam contoh berikut.

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 yang Terpengaruh