[JAVA] Perché mi fa "l'eccezione"?!?
Ciao a tutti,
sto cercando di analizzare alcune soluzioni date dal mio prof.
Ad es. non capisco perché, se tolgo la parola chiave try e quella più in fondo catch, compilando il programma Java mi dice che devo catturare o dichiarare l'eccezione.
La riga incriminata è la seguente:
Grazie!
Alessandro
sto cercando di analizzare alcune soluzioni date dal mio prof.
Ad es. non capisco perché, se tolgo la parola chiave try e quella più in fondo catch, compilando il programma Java mi dice che devo catturare o dichiarare l'eccezione.
La riga incriminata è la seguente:
file = new Scanner(new FileReader(nome));
Grazie!
Alessandro
Risposte
Ciao Alessandro!
Ti rispondo subito cercando di essere quanto più esauriente possibile (e se non lo sono dimmi pure). Numerosi metodi in Java quando vengono scritti nell'intestazione sono seguiti dalla parola chiave "throws" che significa appunto "lancia" in inglese. Il metodo da te preso in considerazione è considerato capace di generare uno o più tipi di eccezioni (rappresentate dai rispettivi oggeti). Ora, non è chiaramente detto che esso generi sempre e comunque una o più eccezioni in determinati casi ma ovviamente è possibile. Proprio in virtù del fatto che c'è questa possibilità Java (o meglio il suo compilatore) vogliono essere sicuri che il programma da te scritto sia in grado di gestire tale eccezione e questo (per tali strumenti) è garantito dal fatto che tale istruzione sia compresa all'interno di un blocco "try-catch" in cui nel "catch" vengono catturate le eccezioni che tale metodo può generare (anche tramite una superclasse o, addirittura, mediante un interfaccia implementata da tutti tali oggetti rappresentanti le varie eccezioni queste possono essere gestite). In conclusione anche se all'interno del blocco catch non fai nulla Java considera l'eccezione come gestita.
Spero di esserti stato d'aiuto.
Ti rispondo subito cercando di essere quanto più esauriente possibile (e se non lo sono dimmi pure). Numerosi metodi in Java quando vengono scritti nell'intestazione sono seguiti dalla parola chiave "throws" che significa appunto "lancia" in inglese. Il metodo da te preso in considerazione è considerato capace di generare uno o più tipi di eccezioni (rappresentate dai rispettivi oggeti). Ora, non è chiaramente detto che esso generi sempre e comunque una o più eccezioni in determinati casi ma ovviamente è possibile. Proprio in virtù del fatto che c'è questa possibilità Java (o meglio il suo compilatore) vogliono essere sicuri che il programma da te scritto sia in grado di gestire tale eccezione e questo (per tali strumenti) è garantito dal fatto che tale istruzione sia compresa all'interno di un blocco "try-catch" in cui nel "catch" vengono catturate le eccezioni che tale metodo può generare (anche tramite una superclasse o, addirittura, mediante un interfaccia implementata da tutti tali oggetti rappresentanti le varie eccezioni queste possono essere gestite). In conclusione anche se all'interno del blocco catch non fai nulla Java considera l'eccezione come gestita.
Spero di esserti stato d'aiuto.
Ciao,
in Java alcuni metodi sono "a rischio", nel senso che c'è la concreta possibilità che generino problemi (cioè eccezioni). Ad esempio nel tuo caso è la lettura da file. Che succede se il file non è presente oppure non è accessibile? Devi prevederlo! A questo serve la gestione delle eccezioni.
in Java alcuni metodi sono "a rischio", nel senso che c'è la concreta possibilità che generino problemi (cioè eccezioni). Ad esempio nel tuo caso è la lettura da file. Che succede se il file non è presente oppure non è accessibile? Devi prevederlo! A questo serve la gestione delle eccezioni.
Grazie davvero a tutti e due!
Avevo capito che la gestione delle eccezioni era a discrezione del programmatore, per "controllare" e "prevedere" eventuali problemi, come nel caso in cui fosse non presente il file ecc. Invece in questo caso compilando dà proprio "error", quindi grazie a voi ho capito
Avevo capito che la gestione delle eccezioni era a discrezione del programmatore, per "controllare" e "prevedere" eventuali problemi, come nel caso in cui fosse non presente il file ecc. Invece in questo caso compilando dà proprio "error", quindi grazie a voi ho capito

