Newsgroup: it.comp.java
Titolo: clausola throws

Scusate, sto studiando per l'esame di fonamenti di informatica, e mi 
sono imbattuto in questo dubbio. La clausola throws non ho ben capito in 
che casi si usi.
So che la si deve usare nel caso si stia scrivendo un metodo nel quale 
si sa che viene generata una eccezione, ma che non si intende gestirla. 
Ad esempio usando la classe InputStream, il metodo read() lancia una 
eccezione IOException. Se io non la voglio gestire posso dichiarare che 
il mio metodo potrebbe lanciare IOException giusto? E questo lo faccio 
con throws.
Un altro caso è quello in cui io stia scrivendo una classe, nella quale 
però debba io stessa coscientemente lanciare una eccezione. Ad esempio 
ho una divisione per zero, in tal caso lancio ArithmeticException e devo 
dichiararlo con throws.
Ho capito bene questi due casi? Ce ne sono anche altri?
Grazie mille e ciao a tutti.
Luca

> Ho capito bene questi due casi? Ce ne sono anche altri?
Le due classi di problemi sono solo queste.
Ovvio che di scenari ce ne sono milioni!!
L'idea di JAVA comunque è quella di estendere il type-check
non solo ai parametri di input e di output ma anche alle
eccezioni.
Questo consente maggiore rigore nella scrittura di codice.
Per esempio in C# questo non c'è, non esiste la clausola
throws ma esistono le Eccezioni.
Quando sviluppi un buon numero di classi e soprattutto
quando vai ad utilizzarle non ti ricorderai mai e poi mai
tutte le eccezioni che può lanciare ogni singolo metodo.
Quando vai ad _eseguire_ il codice ti ritrovi dei fallimenti per
eccezioni non gestite. E lì riparte il lavoro di sviluppo per
andare a capire dove e perchè queste eccezioni saltino.
E poichè le eccezioni saltano sempre per errori nei parametri
attuali, cioè nel modo in cui vengono invocati i metodi e
non nel codice dei metodi stessi, bisogna risalire tutta la
stack trace e vedere dove e perchè questa eccezione
non sia stata gestita!
In JAVA questo difficilmente accade perchè per ogni
utilizzo di ogni metodo sei costretto a considerare anche
gli eventi di Eccezione che in C# tralasci inevitabilmente!
Ciao,
Luca Paganelli

> Ho capito bene questi due casi? Ce ne sono anche altri?
Le due classi di problemi sono solo queste.


> Ho capito bene questi due casi? Ce ne sono anche altri?
Le due classi di problemi sono solo queste.


> Ho capito bene questi due casi? Ce ne sono anche altri?
Le due classi di problemi sono solo queste.


> Ho capito bene questi due casi? Ce ne sono anche altri?
Le due classi di problemi sono solo queste.


Luca Paganelli wrote:

Grazie mille per l'easaustività.
Luca

> Ho capito bene questi due casi? Ce ne sono anche altri?
Le due classi di problemi sono solo queste.


> Ho capito bene questi due casi? Ce ne sono anche altri?
Le due classi di problemi sono solo queste.


> Ho capito bene questi due casi? Ce ne sono anche altri?
Le due classi di problemi sono solo queste.


> Ho capito bene questi due casi? Ce ne sono anche altri?
Le due classi di problemi sono solo queste.


> Ho capito bene questi due casi? Ce ne sono anche altri?
Le due classi di problemi sono solo queste.


> Ho capito bene questi due casi? Ce ne sono anche altri?
Le due classi di problemi sono solo queste.


> Ho capito bene questi due casi? Ce ne sono anche altri?
Le due classi di problemi sono solo queste.


> Ho capito bene questi due casi? Ce ne sono anche altri?
Le due classi di problemi sono solo queste.


> Ho capito bene questi due casi? Ce ne sono anche altri?
Le due classi di problemi sono solo queste.


> Ho capito bene questi due casi? Ce ne sono anche altri?
Le due classi di problemi sono solo queste.


> Ho capito bene questi due casi? Ce ne sono anche altri?
Le due classi di problemi sono solo queste.


> Ho capito bene questi due casi? Ce ne sono anche altri?
Le due classi di problemi sono solo queste.


> Ho capito bene questi due casi? Ce ne sono anche altri?
Le due classi di problemi sono solo queste.


> Ho capito bene questi due casi? Ce ne sono anche altri?
Le due classi di problemi sono solo queste.


> Ho capito bene questi due casi? Ce ne sono anche altri?
Le due classi di problemi sono solo queste.
