0

我在应用引擎上的任务 servlet 中遇到问题。 有时我会收到一个 arraylist indexoutofbound 异常。我已将 3 个字符串(子域)正确添加到 arraylist 的日志打印,但是当我尝试访问时:

stringUser.add(entry.getTitle().getPlainText()+"@"+listaDeiSottodomini.get(o));

我收到:

Uncaught exception from servlet java.lang.IndexOutOfBoundsException: Index: 9, Size: 4

或者

Uncaught exception from servlet java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

或者

Uncaught exception from servlet java.lang.IndexOutOfBoundsException: Index: 1, Size: 0

这怎么可能?这是我的代码

String [] sottodomini=subdomains.split(",");

           listaDeiSottodomini.add(consumerKey);
           if(sottodomini.length>0 ){
           for(int y=0;y<sottodomini.length;y++){
               if(!sottodomini[y].equals("")){
                   log.info("Aggiungo "+sottodomini[y]+" alla lista dei sottodomini abilitati al contact sharing");
               listaDeiSottodomini.add(sottodomini[y]);  
               }
           }
           }
        log.info("ArrayList value "+listaDeiSottodomini);
        try {
            UserService myService = new UserService("My Application");
            myService.setOAuthCredentials(oauthParameters, signer);

            for(int o=0;o<listaDeiSottodomini.size();o++){
            URL metafeedUrl = new URL("https://apps-apis.google.com/a/feeds/"+listaDeiSottodomini.get(o)+"/user/2.0");
            while (metafeedUrl != null) {
                UserFeed resultFeed;

                resultFeed = myService.getFeed(metafeedUrl, UserFeed.class);

                entries.addAll(resultFeed.getEntries());


                for(int i=0; i<resultFeed.getEntries().size(); i++) {
                    UserEntry entry = resultFeed.getEntries().get(i);


                    if(!entry.getLogin().getSuspended()){
                    stringUser.add(entry.getTitle().getPlainText()+"@"+listaDeiSottodomini.get(o));
                    }else{
                        log.warning("L'utente "+entry.getTitle().getPlainText()+"@"+listaDeiSottodomini.get(o)+" è in stato sospeso e quindi non è stato considerato nella procedura di condivisione"); 

                    }
                    }
                // Check for next page
                Link nextLink = resultFeed.getNextLink();
                if (nextLink == null) {
                    metafeedUrl = null;
                } else {
                    metafeedUrl = new URL(nextLink.getHref());
                }
            }
            }

        } catch (AppsForYourDomainException e) {
            log.warning("Errore di AppsForYourDomainException nel recupero degli utenti con messaggio "+e.getMessage().toString());
        } catch (ServiceException e) {
            log.warning("Errore di ServiceException nel recupero degli utenti con messaggio "+e.getMessage().toString());
        } catch (OAuthException e) {
            log.warning("Errore di OAuthException nel recupero degli utenti con messaggio "+e.getMessage().toString());

        }


}
4

0 回答 0