Pengecualian apa yang dilemparkan oleh Newtonsoft.Json.DeserializeObject? Saya ingin menangani mereka.
109
Pengecualian apa yang dilemparkan oleh Newtonsoft.Json.DeserializeObject? Saya ingin menangani mereka.
JSON.NET mendefinisikan pengecualian berikut:
JsonException
JsonReaderException
JsonSerializationException
JsonWriterException
JsonSchemaException
Kesalahan serialisasi atau deserialisasi biasanya akan menghasilkan file JsonSerializationException
.
JsonSerializationException
, tetapi untuk memastikan Anda harus bertanya kepada penulis atau melihat ke kode sumber ... Bagaimanapun, Anda dapat menangkapnyaJsonException
jika Anda ingin memastikan tidak melewatkan apa pun, karena semua JSON Pengecualian .NET mewarisi darinya.Perhatikan bahwa dokumentasi penanganan kesalahan Json.NET menunjukkan strategi bagi pengguna API untuk menangani kesalahan dengan menangani kejadian kesalahan daripada langsung menangkap pengecualian. Ini masuk akal jika Anda mempertimbangkan bahwa mungkin hanya satu item dalam larik yang gagal melakukan deserialisasi, dan Anda mungkin ingin menangani ini dengan cara yang lebih terperinci daripada satu pengecualian monolitik untuk seluruh rangkaian.
Jawaban ini membahas bagian "ingin menanganinya" dari pertanyaan Anda tanpa sampai ke bagian "pengecualian apa". Seperti yang ditunjukkan jawaban lain, semua pengecualian Json.NET mewarisi dari JsonException Class , jadi menangkap ini akan menjadi cara yang aman untuk gagal. Namun, tampaknya jika Anda ingin benar-benar memahami apa yang menyebabkan pengecualian dilempar, Anda perlu membaca
Message
propertinya, bukan menangani berdasarkanException
jenisnya, karena jenis yang berbeda tampaknya lebih berorientasi pada tindakan yang Anda lakukan daripada kategori kesalahan. Dalam kode contoh berikut,args.ErrorContext.Error
adalah turunan dariException
.Contoh kode dari dokumentasi:
sumber