View Full Version : [JAVA] Eccezioni
marcoqwertyuiop
02-06-2015, 17:25
Salve, vorrei capire perchè questo codice non mi visualizza il messaggio ERRORE che ha sull'eccezione se si tenta di accedere ad un elemento che non è nell'array.
class Prova {
public static void main(String[] args) {
String[] dati = new String[10];
System.out.println(dati[11]);
}
static void stampaArray(String[] dati) {
try {
for (int i = 0; i < 10; i++) {
System.out.println(dati[i]);
}
} catch (ArrayIndexOutOfBoundsException exc) {
System.out.println("ERRORE");
}
System.out.println("fine");
}
}
[Kendall]
02-06-2015, 17:52
Salve, vorrei capire perchè questo codice non mi visualizza il messaggio ERRORE che ha sull'eccezione se si tenta di accedere ad un elemento che non è nell'array.
class Prova {
public static void main(String[] args) {
String[] dati = new String[10];
System.out.println(dati[11]);
}
static void stampaArray(String[] dati) {
try {
for (int i = 0; i < 10; i++) {
System.out.println(dati[i]);
}
} catch (ArrayIndexOutOfBoundsException exc) {
System.out.println("ERRORE");
}
System.out.println("fine");
}
}
In questo codice stai facendo due errori.
Il primo è quello di creare un array di stringhe senza inizializzarle.
Con il codice
String[] dati = new String[10];
tu crei un array di stringhe. Cos'è un array in Java? Essenzialmente una sequenza di riferimenti (adiacenti in memoria) a degli oggetti di tipo String. Se tu però non assegni una stringa a quei 10 riferimento loro "punteranno" sempre e solo a null (cioè a nessun oggetto).
Se nel tuo caso vai a stampare uno ad uno gli elementi di quell'array
for (String item: dati) {
System.out.println(item);
}
vedrai che la console ti stamperà a schermo 10 volte "null".
Il secondo errore riguarda il fatto che il metodo che hai scritto, dove intercetti l'eccezione di tipo ArrayIndexOutOfBoundsException, non vai poi a usarlo nel tuo metodo main, dove invece usi un semplice System.out.println.
Tra l'altro quel metodo statico è scritto in una maniera un po' bizzarra e decisamente errata.
Se vuoi semplicemente fare delle prove riguardo all'intercettare eccezioni ti conviene farlo direttamente sul metodo main.
es°
public static void main(String[] args) {
String[] array = new String[10];
try {
System.out.println(array[10]);
} catch (ArrayIndexOutOfBoundsException exc) {
System.out.println("ERRORE");
}
}
marcoqwertyuiop
03-06-2015, 19:12
Ok, grazie.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.