Использование facebook fql, иногда, когда на моей странице нет сообщений, удовлетворяющих запросу ниже, запрос возвращает пустую строку сообщения, как я могу избежать исключения в этом случае.Избегайте исключения при запросе пустого запроса facebook
код:
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)
Если вы посмотрите на трассировку исключения, вы увидите, что произошла ошибка в операции ArrayList.get. Это соответствует операции 'queryResults.get (0)' в вашем коде, и в исключении указано, что вы попросили элемент списка, которого не было. Таким образом, нет нулевого элемента. Ergo, ваш код должен проверить либо 'isEmpty()', либо 'size()' в списке, прежде чем обращаться к нему, и не получить доступ, если нет записей. (Код, вероятно, также должен рассмотреть случай, когда имеется более одной записи.) Вам не нужно было помогать в этом - информация прямо перед вашими глазами. –