Que exceções Newtonsoft.Json.DeserializeObject lança? Eu quero lidar com eles.
109
Que exceções Newtonsoft.Json.DeserializeObject lança? Eu quero lidar com eles.
JSON.NET define as seguintes exceções:
JsonException
JsonReaderException
JsonSerializationException
JsonWriterException
JsonSchemaException
Erros de serialização ou desserialização normalmente resultam em a JsonSerializationException
.
JsonSerializationException
, mas para ter certeza você teria que perguntar ao autor ou olhar o código-fonte ... De qualquer forma, você pode apenas pegarJsonException
se quiser ter certeza de não perder nada, já que todos os JSON As exceções do .NET são herdadas dele.Observe que a documentação de tratamento de erros do Json.NET mostra uma estratégia para o usuário da API lidar com erros tratando de eventos de erro em vez de capturar exceções diretamente. Isso faz sentido quando você considera que talvez apenas um item em uma matriz pode falhar ao desserializar, e você pode querer lidar com isso de uma forma mais granular do que uma exceção monolítica para todo o conjunto.
Esta resposta aborda a parte "quero lidar com eles" de sua pergunta sem chegar à parte "quais exceções". Como mostra outra resposta, todas as exceções Json.NET herdam da classe JsonException , portanto, pegar isso seria um bom fail-safe. No entanto, parece que se você quiser realmente entender o que causou o lançamento de uma exceção, você precisará ler sua
Message
propriedade, não manipular com base noException
tipo, pois os diferentes tipos parecem ser mais orientados para a ação que você está executando do que a categoria de erro. No código de exemplo a seguir,args.ErrorContext.Error
é uma instância deException
.Exemplo de código da documentação:
fonte