Как правильно обрабатывать throwIndexOutOfBoundsException? В основном, я запрашиваю пользователя. Если пользователь существует, он показывает свой профиль. Однако, если запись не найдена, это приведет к сбою моего приложения и вызовет исключение. Что мне следует включить в мое заявление «else», чтобы приложение не разбилось?ParseQuery - Правильная обработка IndexOutOfBoundsException - Parse.com?
@Override
public void done(List<ParseUser> parseUsers, ParseException e) {
if (e == null) {
// The query was successful.
ParseUser user = parseUsers.get(0);
String userId = user.getObjectId();
showProfileActivity(userId);
} else {
// The query was unsuccessful.
}
}
});
Вот LogCat:
10-14 21:27:06.888 28595-28595/com.app.social E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.elgami.customizer, PID: 28595
java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
at java.util.ArrayList.get(ArrayList.java:308)
at com.elgami.feed.SearchActivity$1$1.done(SearchActivity.java:74)
at com.elgami.feed.SearchActivity$1$1.done(SearchActivity.java:67)
at com.parse.Parse$6$1.run(Parse.java:944)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Я должен был сказать то же самое – Apurva
Отлично! Я пошел на первый вариант, проверяя пустой список. Является ли метод try/catch более или менее общим, и существуют ли какие-либо конкретные соображения для использования одного над другим с точки зрения передового опыта? Так или иначе, работало чудесно. – drearypanoramic
catching Исключение отлично, если мы хотим отобразить конкретное сообщение пользователю в зависимости от исключения конкретного пользователя. Но они делают программу немного медленнее. Принимая во внимание, что, предварительно проверив Исключения, как в Варианте 1, мы помешали ему возникнуть позже в нашем коде. Это лучше, так как это будет быстрее, чем вариант 2. Подробнее читайте здесь: https://docs.oracle.com/javase/tutorial/essential/exceptions/advantages.html и http://stackoverflow.com/questions/299068/how-slow-are-java-exceptions. – WannaBeGeek