Java 在查询空facebook查询时避免异常

Java 在查询空facebook查询时避免异常,java,exception,facebook-fql,Java,Exception,Facebook Fql,使用facebook fql,有时当我的页面上没有满足以下查询的帖子时,查询将返回一个空消息字符串,在这种情况下,我如何避免出现异常 代码: String query = "SELECT message,timeline_visibility, created_time FROM stream WHERE source_id = 187050104663230 AND message AND strlen(attachment.fb_object_type) < 1 AND type

使用facebook fql,有时当我的页面上没有满足以下查询的帖子时,查询将返回一个空消息字符串,在这种情况下,我如何避免出现异常

代码:

String query = "SELECT message,timeline_visibility, created_time   FROM stream WHERE source_id = 187050104663230 AND message AND strlen(attachment.fb_object_type) < 1 AND type != 56 AND type = 46  AND strpos(message, \"prayer time(s)\") < 0 AND strpos(message, \"White days\") < 0 AND strpos(message, \"Hadith of the Day:\") < 0 AND created_time > " + facebook_check_post_Unix_Time + "LIMIT 1";

try 
{
List<JsonObject> queryResults = facebookClient.executeFqlQuery(query, JsonObject.class);
facebook_post = queryResults.get(0).getString("message");
facebook_post_visibility = queryResults.get(0).getString("timeline_visibility");
}
catch (FacebookException e){logger.warn("Unexpected error", e); logger.warn("Unexpected error", e);} 
catch (Exception e){logger.warn("Unexpected error", e); logger.warn("Unexpected error", e);} 
2013-12-22 07:46:35,913 WARN [javafxapplication4.JavaFXApplication4] - Unexpected error
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.rangeCheck(ArrayList.java:638)
    at java.util.ArrayList.get(ArrayList.java:414)
    at java.util.Collections$UnmodifiableList.get(Collections.java:1369)
    at javafxapplication4.JavaFXApplication4$1.run(JavaFXApplication4.java:1121)
    at java.util.TimerThread.mainLoop(Timer.java:555)
    at java.util.TimerThread.run(Timer.java:505)
使用

您之所以会出现异常,是因为您盲目地试图对一个您甚至不知道存在的对象调用一个方法:

facebook_post = queryResults.get(0).getString("message");

他得到异常是因为他试图获取一个不存在的元素。如果他试图调用一个方法,他可能会得到一个NullPointerException。关键是queryResults中没有元素零——如果选中
size()
is,它将返回零。@HotLicks这正是我的观点。我的代码块第1行的“if(!queryResults.isEmpty())”阻止了这种情况的发生。如果查看异常回溯,可以看到错误发生在ArrayList.get操作上。这对应于代码中的
queryResults.get(0)
操作,异常告诉您请求的列表元素不存在。所以没有零元素。因此,在访问列表之前,您的代码需要检查列表上的
isEmpty()
size()
,如果没有条目则不访问。(代码也应该考虑有一个以上条目的情况)你不应该为此需要帮助——信息就在你眼前。
facebook_post = queryResults.get(0).getString("message");