2017-01-23 73 views
0

使用包裝器'themoviedbapi'來抓取TMDB的數據時遇到了一些麻煩。使用'themoviedbapi'封裝在TMDB API上響應狀態代碼的異常處理

我寫了一個測試類來看看,當我想把這些json響應放入數據庫時​​會發生什麼。

所以,打的ID,這是不考慮的時候,我得到了以下信息:

Exception in thread "main" ResponseStatus{code=34, message=The resource you requested could not be found.} 
at info.movito.themoviedbapi.AbstractTmdbApi.mapJsonResult(AbstractTmdbApi.java:78) 
at info.movito.themoviedbapi.AbstractTmdbApi.mapJsonResult(AbstractTmdbApi.java:45) 
at info.movito.themoviedbapi.AbstractTmdbApi.mapJsonResult(AbstractTmdbApi.java:40) 
at info.movito.themoviedbapi.TmdbMovies.getMovie(TmdbMovies.java:60) 
at tmdb_api_to_db.Test.main(Test.java:21) 

由於我的Java是生鏽的地獄,請你告訴我,該如何處理呢?我正在考慮嘗試&捕獲,但我會很感激任何好建議!

這裏是我到目前爲止的代碼:

package tmdb_api_to_db; 

import org.apache.commons.httpclient.HttpException; 
import info.movito.themoviedbapi.TmdbApi; 
import info.movito.themoviedbapi.TmdbMovies; 
import info.movito.themoviedbapi.model.Credits; 
import info.movito.themoviedbapi.model.MovieDb; 

public class Test { 


public static void main(String[]args){ 

    int movieID = 1; 

    try{ 

    TmdbMovies movies = new TmdbApi("###########").getMovies(); 
    MovieDb movie_name = movies.getMovie(movieID, "en"); 
    Credits movie_credits = movies.getCredits(movieID); 

    System.out.println(movie_name); 
    System.out.println(movie_credits.getCast()); 
    System.out.println(movie_credits.getCrew()); 
    System.out.println(movie_credits.getGuestStars()); 
    System.out.println(prettyJsonString); 
    }catch(XX){ 
     } 

    } 

} 

回答

0

使用嘗試catch是一個不錯的辦法。我不知道這個API,但你可以檢查catch中的錯誤代碼來決定下一步該做什麼。

如果你真的想確保誤差來自於特定的線路,我建議你修改你的try/catch這樣的:

// .. 

TmdbMovies movies = new TmdbApi("###########").getMovies(); 
MovieDb movie_name; 
try{ 
    movie_name = movies.getMovie(movieID, "en"); 
}catch(Throwable e){ 
    System.err.println("Erreur getting movie #"+movieID); 
    return; 
} 

// ... 
+1

謝謝!那正是我期待的! :) 編輯:對不起,不能投票了,因爲我的聲望很低:( – pallox