Exception non interceptée en réponse à la recherche de métadonnées IMDB

Petit bogue remarqué en lisant les journaux : MCEBuddy analyse la réponse à l’appel d’API de recherche IMDB. Il devrait être facile d’ajouter un test pour supprimer l’erreur. Il s’agit probablement de la réponse attendue en cas de délai d’attente ou de réponse vide.

--> Recherche IMDB pour correspondance de titre de série
WARNING> --> Erreur lors de l’analyse de la réponse IMDB
Erreur -> System.NullReferenceException: La référence d’objet n’est pas définie à une instance d’un objet.
   à MCEBuddy.MetaData.IMDB.SearchShowTitle(String title, Nullable`1 releaseDate, ShowType matchType, Boolean firstMatchOnly, Boolean searchAKAs, Log jobLog)
--> Titres trouvés par recherche IMDB -> 0

Il est intentionnel de capturer le problème principal lorsqu’une recherche échoue de manière inattendue. Cela est souvent causé par des informations manquantes.

Alors, qu’est-ce que cette erreur nous dit exactement de la cause racine ? Les éléments importants pour vraiment identifier la cause racine de l’échec sont les valeurs des paramètres passés à cette fonction, et non la signature de la fonction.

Et oui, je sais que cela demande un travail supplémentaire parce que Java/C#/Python/etc. sont tous complètement dépourvus en matière de messages d’erreur, le pire étant l’erreur « ClassNotFound », où le message omet de dire quelle classe n’a pas été trouvée. ProTip : consultez la série Pragmatic Programmer sur Java et la façon dont ils résolvent l’erreur ClassNotFound en surchargeant la classe ClassLoader — assez astucieux. Il faudra peut-être bidouiller la gestion des exceptions pour étendre/surcharger l’exception, afficher les paramètres dans le journal de MCEBuddy, puis relancer l’exception d’origine.

De même, dans ce cas, nous ne savons pas quel paramètre a provoqué l’échec (ou s’il s’agissait simplement d’un délai d’attente réseau) ou s’il y a eu un échec d’API avec un code d’erreur. Bien que, si une erreur comme celle que nous voyons ici survient et qu’aucun code d’erreur n’est renvoyé par l’appel d’API, cela devrait être un problème (mineur) de codage côté MCEBuddy, et non un manque de réponse du service API (car ce serait une réponse (vide) non-réponse attendue — c’est-à-dire cette réponse nulle de l’API).

Alors, quelle est la cause racine ?

Cela nous indique (aux développeurs) que les informations AKA que MCEBuddy attendait sur le site de recherche n’existent pas (elles étaient censées y être, mais elles manquent).