Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Save to My Library
Look up keyword
Like this
1Activity
0 of .
Results for:
No results containing your search query
P. 1
Eccezioni

Eccezioni

Ratings: (0)|Views: 92 |Likes:
Published by Cinzia Bocchi
Fondamenti di programmazione e linguaggio Java - Eccezioni
Argomenti:
Gestione degli errori di codice
Intercettazione di errori con try catch
Recuperare l'errore
Tipi di eccezioni
Lanciare eccezioni
Classi di eccezioni
Fondamenti di programmazione e linguaggio Java - Eccezioni
Argomenti:
Gestione degli errori di codice
Intercettazione di errori con try catch
Recuperare l'errore
Tipi di eccezioni
Lanciare eccezioni
Classi di eccezioni

More info:

Published by: Cinzia Bocchi on Oct 22, 2009
Copyright:Attribution Non-commercial Share Alike

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

10/24/2011

pdf

text

original

 
Eccezioni
Introduzione
Il termine
eccezione
è un'abbreviazione della frase "
evento eccezionale
"; esso puòessere definito nel seguente modo:
Un'eccezione è un evento che si verifica durante l'esecuzione di unprogramma (a
runtime
) e che interrompe il normale flusso di istruzioni.
Generalizzando, possiamo classificare gli errori che generano eventi eccezionali, inquattro tipi:1.errori di input dell'utente;2.errori dei dispositivi (ad es. file non esistente, stampante spenta, ecc.);3.limitazioni fisiche (ad es. memoria esaurita);
4.
errori di codice (ad es. elaborazione di un indice di array non valido).Quando in un metodo si verifica un errore del tipo descritto, il metodo crea un oggettoparticolare, detto oggetto eccezione o semplicemente
eccezione
(
exception
) e lasciaal sistema runtime il compito di occuparsi di tale errore. In altre parole si dice che ilmetodo
lancia un'eccezione
(
throwing an exception
).L'oggetto eccezione contiene informazioni riguardanti l'errore e lo stato nel quale sitrovava il programma quando l'errore si è verificato.L'errore originato da un metodo può essere gestito in diverse maniere:
1.
Si può decidere di non occuparsi dell'errore. In tal caso, il programma vieneterminato con una segnalazione dell'errore verificatosi.2.Il metodo può terminare restituendo uno speciale codice di errore, che saràanalizzato dal chiamante.
3.
L’errore può essere intercettato e gestito.Per comprendere meglio ciò che accade, vediamo come viene gestito o non gestito unerrore nei tre casi, mediante alcuni esempi.
Caso1: nessuna gestione dell’errore
Supponiamo che un programmatore A fornisca la classe Vettore, una classe pubblica,non eseguibile, con un metodo statico la cui intestazione è:
public static int getElemento(int index)Il metodo getElemento restituisce l'elemento che si trova, all'interno dell'array,all'indice specificato come parametro.
Autore: Cinzia BocchiUltimo aggiornamento: 10/10/11
1
 
public class 
Vettore
{static int[] a= {0,1,2,3,4,5,6,7,8,9}; public static intgetElemento(intindex) {returna[index];}}
Supponiamo che un programmatore B scriva un'applicazione che stampa l'elemento diun'array in una data posizione, utilizzando la classe fornita dal programmatore A.
importjava.util.*;public class 
UsaVettore
{public static voidmain(String[] args) {Scanner console=newScanner(System.in); intindex, elemento;System.out.println("Inserire l'indice dell'elemento da stampare"); index= console.nextInt();elemento= Vettore.getElemento(index);System.out.println("elemento di indice "+index+" = "+elemento); System.out.println("FINE ELABORAZIONE"); }}
L'esecuzione del metodo main può dare origine ad un errore, nel caso in cui l'utenteinserisca un indice maggiore di 9 o negativo. Nel caso in cui il valore inserito perl'indice sia 10, il programma termina producendo in output la seguente segnalazione:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10at Vettore.getElemento <Vettore.java: 6>at UsaVettore.main <UsaVettore.java: 10>
Il messaggio ci avverte che:
durante l'esecuzione del metodo main si è verificata un'eccezione
Exception in thread "main";
l'errore è stato determinato dal tentativo di accedere ad un elemento di indice10, cioè al di fuori della dimensione dell'array
 ArrayIndexOutOfBoundsException : 10;
l'istruzione che ha causato l'eccezione si trova alla riga 6 del file Vettore.java esi è verificata durante l'esecuzione del metodo getElemento
at Vettore.getElemento <Vettore.java: 6>;
l'eccezione si è propagata al metodo main, precisamente alla riga 11, dellaclasse UsaVettore, contenuta all'interno del file UsaVettore.java
at UsaVettore.main <UsaVettore.java: 10>.
Se si decide di non gestire l'eccezione, durante l'esecuzione dell'istruzione
returna[index];
del metodo getElemento, viene lanciata un'eccezione di tipo
 ArrayIndexOutOfBoundsException
Autore: Cinzia BocchiUltimo aggiornamento: 10/10/11
2
 
L'eccezione viene passata al chiamante (
main
), il quale, non prevedendo alcunstrumento di gestione dell'eccezione, termina bruscamente con la segnalazionedell'errore riscontrato.
Caso 2: gestione dell’errore mediante codice di errore
Supponiamo che un programmatore A, nello scrivere il metodo getElemento, segua leindicazioni del punto 2, controllando la validità dell'indice passato come parametro.
public class 
Vettore
{static int[] a= {0,1,2,3,4,5,6,7,8,9}; public static intgetElemento(intindex) {final intERRORE= -1; if (index>=0 && index<=9){returna[index];}else{returnERRORE;}}}
Il metodo getElemento restituisce -1 se l'indice non è valido. Il programma chiamantedovrà controllare il valore restituito per sapere se l'operazione è andata a buon fine ose si è verificato un errore.
importjava.util.*;class 
UsaVettore
{public static voidmain(String[] args) {Scanner console=newScanner(System.in); intindex, elemento;System.out.println("Inserire l'indice dell'elemento da stampare"); index= console.nextInt();elemento= Vettore.getElemento(index);if (elemento!=-1){System.out.println("elemento di indice "+index+" = "+elemento); System.out.println("FINE ELABORAZIONE"); }else{System.out.println("ERRORE: INDICE NON VALIDO"); }}}
L'output prodotto dal programma, nel caso in cui il valore inserito per l'indice sia 10,è:
ERRORE: INDICE NON VALIDO
Autore: Cinzia BocchiUltimo aggiornamento: 10/10/11
3

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->