Ufanget undtagelse som svar på IMDB metadata søgning

Lille fejl bemærket i logfilerne, hvor MCEBuddy parser svaret fra IMDB-søge-API-kaldet. Burde være en nem fælde eller tjek for at undertrykke det. Det er sandsynligvis det forventede svar, når forbindelsen timeouts eller måske er et tomt svar.

--> Søger IMDB for serietitel-match
WARNING> --> Fejl ved parsing af IMDB-show-svar
Fejl -> System.NullReferenceException: Objektreferencen er ikke indstillet til en forekomst af et objekt.
   ved MCEBuddy.MetaData.IMDB.SearchShowTitle(String title, Nullable`1 releaseDate, ShowType matchType, Boolean firstMatchOnly, Boolean searchAKAs, Log jobLog)
--> IMDB-søgetitler fundet -> 0

Det er med vilje for at fange det grundlæggende problem, hvor en opslagning fejler uventet. Ofte skyldes det manglende information.

Så hvad fortæller den fejl os egentlig om rodårsagen? De vigtige bidder til virkelig at identificere rodårsagen til fejlen er de parameterværdier, der sendes til funktionen – ikke funktionens signatur.

Og ja, jeg ved godt, det kræver lidt ekstra arbejde, fordi Java/C#/Python/osv. er totalt hjernedøde mht. fejlbeskeder; den værste er “ClassNotFound”, hvor beskeden ikke engang fortæller, hvilken klasse der ikke blev fundet. ProTip: kig i Pragmatic Programmer-serien om Java og se, hvordan de løser ClassNotFound ved at override ClassLoader-klassen – ret smart. Det kan kræve lidt fiklen med exception-håndteringen for at udvide/override exception’en, dumpe parametrene ud i MCEBuddy-loggen og derefter kaste den oprindelige exception igen.

Ligeledes ved vi i dette tilfælde ikke, hvilken parameter der forårsagede fejlen (eller om det blot var et simpelt netværks-timeout), eller om der var en API-fejl med en fejlkode. Selvom hvis der opstår en fejl som denne her uden at API-kaldet returnerer en fejlkode, burde det være en (lille) kodningsfejl på MCEBuddy-siden – ikke manglende respons fra API-tjenesten (som i så fald ville være en forventet (tom) ikke-respons – dvs. dette null-svar fra API’en).

Så hvad er rodårsagen?

Det fortæller os (udviklere), at de AKA-oplysninger, MCEBuddy forventede at finde på opslagssiden, ikke findes (de burde være der, men mangler).