Jakie wyjątki zgłasza Newtonsoft.Json.DeserializeObject? Chcę się nimi zająć.
109
Jakie wyjątki zgłasza Newtonsoft.Json.DeserializeObject? Chcę się nimi zająć.
JSON.NET definiuje następujące wyjątki:
JsonException
JsonReaderException
JsonSerializationException
JsonWriterException
JsonSchemaException
Błędy serializacji lub deserializacji zazwyczaj powodują, że plik JsonSerializationException
.
JsonSerializationException
, ale dla pewności musiałbyś zapytać autora lub zajrzeć do kodu źródłowego ... Zresztą możesz po prostu złapać,JsonException
jeśli chcesz mieć pewność, że niczego nie przegapisz, bo cały JSON Wyjątki .NET dziedziczą po nim.Należy zauważyć, że dokumentacja obsługi błędów Json.NET przedstawia strategię dla użytkownika interfejsu API radzenia sobie z błędami, obsługując zdarzenia błędów, a nie bezpośrednio przechwytując wyjątki. Ma to sens, gdy weźmiesz pod uwagę, że być może tylko jeden element w tablicy może nie zostać zdeserializowany, i możesz chcieć obsłużyć to w bardziej szczegółowy sposób niż jeden monolityczny wyjątek dla całego zestawu.
Ta odpowiedź dotyczy części pytania „chcę sobie z nimi poradzić”, bez przechodzenia do części „jakie wyjątki”. Jak pokazuje inna odpowiedź, wszystkie wyjątki Json.NET dziedziczą po klasie JsonException , więc przechwycenie tego byłoby dobrym zabezpieczeniem przed awarią. Jednak wydaje się, że jeśli chcesz naprawdę zrozumieć, co spowodowało wyrzucenie wyjątku, musisz przeczytać jego
Message
właściwość, a nie obsłużyć na podstawieException
typu, ponieważ różne typy wydają się być bardziej zorientowane na akcję, którą wykonujesz niż kategoria błędu. W poniższym przykładowym kodzieargs.ErrorContext.Error
jest wystąpieniemException
.Przykładowy kod z dokumentacji:
źródło