|
|
|
![]() |
|
Strumenti |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
L'eccezione è una sola, è quel:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 le linee che seguono e iniziano con "at" cercano di informarti sul punto in cui l'eccezione si è verificata. Questa informazione è data "srotolando" la pila dei frame del thread che esegue il codice. Quando invochi un metodo, quell'invocazione diventa un frame nel thread corrente e quel frame viene impilato nello stack frame del thread. Così se dal metodo "main" invochi il metodo "aaa" e da "aaa" invochi il metodo "bbb" quando il thread esegue "bbb" il suo stack frame è: bbb aaa main quando si verifica un'eccezione, la catena di invocazioni che hanno prodotto lo stack frame viene "spilata" nella "stack trace" (traccia della pila) dell'eccezione. Il messaggio di errore che ottieni dice appunto che: Exception in thread NOME DEL THREAD ("main" è il nome del thread creato per l'esecuzione del metodo main di un programma java da parte della jvm). Dopo il nome del thread c'è il tipo di eccezione prodotta. java.lang.ArrayIndexOutOfBoundsException indica che il codice ha tentato di accedere ad un componente di un array usando un indice non valido perchè maggiore del maggiore degli indici validi. Dopo il tipo di eccezione segue il messaggio (eventuale) dell'eccezione. 0 (zero) per java.lang.ArrayIndexOutOfBoundsException, il messaggio consiste nell'indice che si è tentato di usare e che "sfora" i limiti dell'array. Dunque, hai cercato di accedere al componente di indice zero di un array ma zero è maggiore del maggiore degli indici associati ad un componente di quell'array. Ergo, l'array è vuoto. Lo stack trace seguente ti aiuta a determinare la linea di codice che è responsabile dell'eccezione. Aiuta o ci prova. 'nsomma, fa quello che può. at NomeClasse.nomeMetodo(NomeFileSorgente:numero di linea) il primo elemento della traccia per te è: Rubrica.crea_persone(Rubrica.java:22) classe Rubrica, metodo crea_persone, nel file sorgente Rubrica.java alla linea 22. Qui si è prodotta l'eccezione. Facciamo finta che ci sia scritto 21, perchè 22 è impossibile. alla linea 21 noti l'espressione di accesso ad un componente di un array: ...args[0]... Bingo. L'array args era evidentemente vuoto al momento dell'esecuzione. Se lanci il programma con: java Rubrica Pippo noterai che l'eccezione non si verifica più. Il problema è quindi una precondizione errata (che args abbia sempre almeno un componente). |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:16.