Originariamente inviato da lellone88
salve a tutti,
sto seguendo un corso di programmazione in Java all'università, e sto cercando di spratichirmi un pò con l'argomento delle eccezioni.
c'ho capito abbastanza relativamente alle eccezioni, ma mi sto inceppando su un mio esempio personale.
in pratica ho creato una mia eccezione personalizzata che gestisca il superamento dei limiti di un array.
vi posto sotto il codice.
// codice classe che implementa la mia eccezione
public class mia_eccezione extends ArrayIndexOutOfBoundsException {
public mia_eccezione() {;}
public mia_eccezione (String s) {
super(s);
}
public void print_correctly(int [] a) { // funzione che stampi comunque il vettore
for (int i=0; i<a.length; i++) {
System.out.println(a[i]);
}
}
}
// codice main
public class main {
public static void main(String[] args) throws ArrayIndexOutOfBoundsException {
int [] array = new int[10];
try{
for (int i=0;i<12;i++) { // qui esco appositamente fuori limite
array[i] =i;
}
}
catch (mia_eccezione exc) {
System.out.println("errore");
exc.printStackTrace();
exc.print_correctly(array); // dovrebbe stamparmi comunque l'array
}
}
ma quando compilo ed eseguo, guardate invece qual'è l'output della console:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at main.main(main.java:14)
in altri termini, nonostante c'avessi piazzato un'eccezione derivata da arrayindexoutofbounds il gestore dell'eccezioni istanzia lo stesso una eccezione di tipo arrayindexoutofbounds, e la mia eccezione non viene sollevata.
perchè? qualcuno saprebbe spiegarmelo?
confido in vostre risposte.
cordiali saluti
lellone