Ich habe den folgenden Code in meinem Android-App:Warum passiert hier eine ArrayIndexOutOfBoundsException?
Event[] events = retrieveEvents();
if (events != null && events.length>0) {
int eventNr = getFromUserInput();
eventNr = eventNr % events.length;
Event event = events[eventNr];
}
retrieveEvents() einige Event
s aus dem Internet bekommt, so kann dies ein zwar leer oder null
sein scheitern. Der Benutzer kann wählen, welche Event
angezeigt werden soll, um eine Ausnahme zu vermeiden Ich verwende die Modulo-Operation, um sicherzustellen, dass die eventNr
innerhalb der Grenzen ist. Dies funktioniert auf allen Geräten, die ich getestet habe auf BUT:
Ich erhalte Fehlermeldungen von anderen Benutzern, wo die vorletzte Zeile (der Array-Zugriff) eine ArrayIndexOutOfBoundsException
wirft. Wie kann das passieren? Welchen Zustand habe ich unkontrolliert? Wo ist mein Fehler?
Denken Sie daran: Die retrieveEvents()
und die getFromUserInput()
Funktion können beide ungültige Daten zurückgeben, aber ich denke, ich habe jeden Fall überprüft, also wo ist meine Schuld?
Also * erhalten * Sie eine ArrayIndexOutOfBoundsException? Auf welcher Linie? das Ereignis Ereignis = Ereignisse [EreignisNr]; Zeile? – aioobe
@aioobe: Ja, er sagte * "wo die zweitletzte Zeile (der Array-Zugriff) wirft ..." * –
Was ist der Index in der Ausnahme? – starblue