Eccezioni java: throw, throws, try, catch

Androidino

Utente Attivo
16 Gen 2014
30
1
0
ciao a tutti,

del corso di programmazione orientata agli oggetti ho capito tutto finora, tranne qualcosa riguardante le eccezioni, mi spiego meglio...

Abbiamo visto che le classi di eccezioni possono appartenere a o ereditare da Exception o RuntimeException... le prime sono un po' più "pesanti" e richiedono controlli obbligatori, mentre per le seconde basterebbe un if, ma è qui che mi confondo: throw e throws quando e dove vanno messi? E il try catch, quando e dove? nei main solitamente, vero?

Gradirei che qualcuno mi spiegasse per entrambi i tipi di eccezioni come e con che logica vanno sistemati throw, throws, try, catch, quando sono obbligatori, quando consigliati, etc.

Grazie! :)
 

Slyfer

Utente Attivo
4 Dic 2010
65
21
0
Ciao, partiamo con le eccezioni.

Le eccezioni si dividono in due categorie le checked e le unchecked (quelle che ereditano da runtime).

Per le checked è obbligatorio mettere un try catch nel metodo o mettere il throws nella firma del metodo stesso; per le unchecked non devi fare nessun controllo.

Esempi di checked exception sono la IOException e derivate (es FileNotFoundException) mentre per le unchecked sono la NullPointerException o l'ArrayIndexOutOfBoundException.

Questa è la teoria, ora ti faccio un esempio per spiegarti come uso io i try catch etc...

Tipicamente un'applicazione si deve dividere in layer; ora senza stare qua ad approfondire avrai sempre della classi (o metodi se fai tutto in una classe sola;) che contengono la business logic, che io tipicamente chiamo service.

Nei service (anche se sono metodi) devi capire se è opportuno catchare l'eccezione o dichiararla nella firma.

Es se ho un metodo che legge il contenuto di un file:

Codice:
public String readFile(String fileName)

Il codice è del tipo:

Codice:
File f = new File(fileName);
InputStream is = f.getInputStream();
....
return fileContent;

Questo codice lancia una FileNotFoundException quindi ho due scelte:

- aggiungere alla throws list
- gestire l'eccezione e ritornare null o stringa vuota

Caso1

Codice:
public String readFile(String fileName) throws FileNotFoundException/CODE]

Caso2 

[CODE]
try{
File f = new File(fileName);
InputStream is = f.getInputStream();
....
return fileContent;
} catch (FileNotFoundException e) {
return null;
}

In linea generale dipende da che si deve fare, io come regola personale catcho le eccezioni sono se devo aggiungere info o personalizzarle usando eccezioni custom

es
Codice:
public String readFile(String fileName) throws ServiceException

try{
File f = new File(fileName);
InputStream is = f.getInputStream();
....
return fileContent;
} catch (FileNotFoundException e) {
throw new ServiceException(e, "File Not Found");
}
 
Discussioni simili
Autore Titolo Forum Risposte Data
checcox87 lista eccezioni java (era: urgente aiuto) Java 2
F PHP, PDO e visualizzazioni errori e/o eccezioni PHP 3
D [JSP] Gestire eccezioni relative alla scadenza delle sessioni Java 0
T php-problema con eccezioni PHP 2
Z Gestione eccezioni con passaggio stringa PHP 6
F Rilanci di Eccezioni e Problema con le Sessioni PHP 1
L java api_google Javascript 0
F NetBeans problema creazione progetto Java Windows e Software 0
Z [java] bufferizzare stream audio da mic Java 1
L java + Api di google Javascript 1
A [Cerchiamo] [Retribuito/a] "Java Solution Architect" Offerte e Richieste di Lavoro e/o Collaborazione 1
F Script java elenco alfabetico non funziona Javascript 3
C Serializzazione in java Java 1
M AIUTO ESERCIZIO JAVA Javascript 1
M Ripasso Java Offerte e Richieste di Lavoro e/o Collaborazione 0
F [OFFRO - RETRIBUITO] Sviluppatori JAVA Offerte e Richieste di Lavoro e/o Collaborazione 0
L leggere RGB di un pixel dello schermo in java Java 1
I Creazione programmino JAVA Offerte e Richieste di Lavoro e/o Collaborazione 0
F Aiuto java script Javascript 2
T [Java] tipi generici con esempio pratico Java 1
J File audio in java Java 0
V [JAVA] come integrare un software scritto in java su una pagina web? Java 4
C Java client / server Java 0
F [OFFRO][RETRIBUITO] PROGRAMMATORE JAVA Offerte e Richieste di Lavoro e/o Collaborazione 0
C [Java] testare un metodo con Junit Java 1
A [Java] caricare un url esterno senza utilizzo di iframe Java 0
S [OFFRO] Debug delle tue applicazioni Java Offerte e Richieste di Lavoro e/o Collaborazione 1
L [Java] Aggiungere elementi ad array JSON Java 0
B [Java] Paginazione in risposta HTTP Java 0
A [Java]Date diminuite di un giorno su db MySQL Java 0
K [Java] aiuto switch case Java 1
P [Java] limite destro di un JFrame Java 5
D [Java] far partire JProgressBar all'apertura di un JFrame Java 1
N [java con eclipse]metodo ricorsivo che accetta in ingresso un char e restituisce un int Java 0
A Verifica validità data in Java Java 2
L [Java] Errore json conversione Java 0
Drago73 [Java] leggere/scrivere txt server Java 0
M [Javascript] Java card Java 0
serena.cerutti posizioni aperte: PhP, Java, .Net Offerte e Richieste di Lavoro e/o Collaborazione 0
N [Java]problema jasper report dopo compilazione file .jar Java 0
N [Java] Piccolo jform per calcolo totale da 2 campi i double Java 0
N [Java] jbutton con funzioni Java 2
M [java] esercizio lunghezza array di stringhe Java 0
A [java] problema esercizio Java 0
filograndipad2 Esempi chiari e completi sul funzionamento degli eventi in Java Java 1
Raziel84 [Java] Combinazione elementi matrice Java 0
A [java] problema esercizio array Java 5
L da php a popup java PHP 2
W Piccolo sistema per gestire alcune periferiche, Java o altro linguaggio? Java 8
S Cerco programmatore java Offerte e Richieste di Lavoro e/o Collaborazione 0

Discussioni simili