IMDB 中繼資料搜尋未捕獲的例外狀況

只是個小錯誤,我在查看日誌時發現 MCEBuddy 在解析 IMDB 搜尋 API 回應時出現這段。應該很容易用個陷阱或檢查來抑制。很可能是連線逾時或回應為空時的預期回應。

--> Searching IMDB for Series Title match
WARNING> --> Error parsing IMDB Show response
Error -> System.NullReferenceException: Object reference not set to an instance of an object.
   at MCEBuddy.MetaData.IMDB.SearchShowTitle(String title, Nullable`1 releaseDate, ShowType matchType, Boolean firstMatchOnly, Boolean searchAKAs, Log jobLog)
--> IMDB search titles found -> 0

這是為了捕捉查找意外失敗的根本原因,通常是由於資訊缺失所導致。

那麼,這個錯誤究竟告訴我們什麼關於根本原因?真正用來辨識失敗根本原因的重點,是傳入該函式的參數值,而不是函式的簽章。

是的,我知道這需要額外的工作,因為 Java/C#/Python 等語言在錯誤訊息方面都很「腦殘」,最糟的就是「ClassNotFound」錯誤,訊息裡完全沒說是哪個類別找不到。專業提示:去查《Pragmatic Programmer》系列裡關於 Java 的部分,他們透過覆寫 ClassLoader 類別來解決 ClassNotFound 錯誤——相當高明。你可能得動點手腳去擴充/覆寫 Exception,把參數吐到 MCEBuddy 日誌裡,然後再把原始例外重新拋出。

同樣地,在這個案例裡,我們不知道是哪個參數導致失敗(還是只是單純的網路逾時),也無從得知 API 是否回傳了錯誤碼。不過,如果出現的是我們看到的這種錯誤,而 API 呼叫並沒有回傳錯誤碼,那應該算是 MCEBuddy 端的小 bug,而不是 API 服務端沒回應(因為那會是預期的「空」回應——也就是 API 回傳 null)。

所以,根本原因到底是什麼?

它告诉我们(开发者),MCEBuddy 在查询站点上期望的 AKA 信息不存在(本应有,但缺失了)。