Quelles exceptions Newtonsoft.Json.DeserializeObject lance-t-il? Je veux les gérer.
109
Quelles exceptions Newtonsoft.Json.DeserializeObject lance-t-il? Je veux les gérer.
JSON.NET définit les exceptions suivantes:
JsonException
JsonReaderException
JsonSerializationException
JsonWriterException
JsonSchemaException
Les erreurs de sérialisation ou de désérialisation entraîneront généralement un fichier JsonSerializationException
.
JsonSerializationException
, mais pour être sûr qu'il faudrait demander à l'auteur ou regarder dans le code source ... Quoi qu'il en soit, vous pouvez juste attraperJsonException
si vous voulez être sûr de ne rien manquer, puisque tout JSON Les exceptions .NET en héritent.Notez que la documentation de gestion des erreurs de Json.NET montre une stratégie pour l'utilisateur de l'API pour traiter les erreurs en gérant les événements d'erreur plutôt qu'en interceptant directement les exceptions. Cela a du sens si vous considérez que la désérialisation d'un seul élément d'un tableau peut échouer et que vous souhaiterez peut-être gérer cela de manière plus granulaire qu'une exception monolithique pour l'ensemble complet.
Cette réponse répond à la partie «veulent les gérer» de votre question sans arriver à la partie «quelles exceptions». Comme le montre une autre réponse, toutes les exceptions Json.NET héritent de la classe JsonException , donc attraper cela serait une bonne sécurité. Cependant, il semble que si vous voulez vraiment comprendre ce qui a provoqué la levée d'une exception, vous devez lire sa
Message
propriété, et non la poignée en fonction duException
type, car les différents types semblent être plus orientés sur l'action que vous effectuez que la catégorie d'erreur. Dans l'exemple de code suivant, leargs.ErrorContext.Error
est une instance deException
.Exemple de code de la documentation:
la source