Какие исключения выбрасывает Newtonsoft.Json.DeserializeObject? Я хочу с ними справиться.
109
Какие исключения выбрасывает Newtonsoft.Json.DeserializeObject? Я хочу с ними справиться.
JSON.NET определяет следующие исключения:
JsonException
JsonReaderException
JsonSerializationException
JsonWriterException
JsonSchemaException
Ошибки сериализации или десериализации обычно приводят к возникновению файла JsonSerializationException
.
JsonSerializationException
, но для уверенности придется спросить автора или заглянуть в исходный код ... В любом случае, вы можете просто поймать,JsonException
если хотите быть уверенным, что ничего не пропустите, поскольку все JSON От него наследуются исключения .NET.Обратите внимание, что документация по обработке ошибок Json.NET показывает стратегию для пользователя API по устранению ошибок путем обработки событий ошибок, а не прямого перехвата исключений. Это имеет смысл, если учесть, что, возможно, только один элемент в массиве может не десериализоваться, и вы можете решить эту проблему более детально, чем одно монолитное исключение для всего набора.
Этот ответ касается части вашего вопроса «хочу их обработать», не касаясь части «какие исключения». Как показано в другом ответе, все исключения Json.NET наследуются от класса JsonException , поэтому отловить это было бы неплохо. Однако кажется, что если вы действительно хотите понять, что вызвало возникновение исключения, вам нужно будет прочитать его
Message
свойство, а не дескриптор в зависимости отException
типа, поскольку разные типы кажутся более ориентированными на действие, которое вы выполняете, чем категория ошибки. В следующем примере кодаargs.ErrorContext.Error
это экземплярException
.Пример кода из документации:
источник