Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Eccezioni controllate

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2014
    residenza
    Cantalupa (TO)
    Messaggi
    24

    Eccezioni controllate

    Ciao a tutti! Stavo facendo delle prove con la gestione dell IO e della classe File, ma ho scoperto di non saper bene gestire le eccezioni controllate, riporto il codice che mi da problemi:

    codice:
    import java.util.*;
    import java.io.*;
    public class provaClasseFile {
        public static void main(String[] args) throws FileNotFoundException {
            String nomeComp;
            Scanner buffer = new Scanner(System.in);
            File f;
    
    
            System.out.println("Inserisci il nome completo del file (Inserisci 0 per chiudere il programma)");
            nomeComp = buffer.next();
            while(!nomeComp.equals("0")) {
                try {
                    f = new File(nomeComp);
    
    
                }
                catch(FileNotFoundException id0) {
                    System.out.println("File non trovato");
                }
    
    
            System.out.println("Inserisci il nome completo del file (Inserisci 0 per chiudere il programma)");
            nomeComp = buffer.next();
            }
    
    
    
    
        }
    }
    Compilando il compilatore mi segnala il seguente errore:

    C:\Users\Asus\Desktop\Documenti\Uni\MieiProgetti\p rovaClasseFile.java:29: error: exception FileNotFoundException is never thrown in body of corresponding try statement
    catch(FileNotFoundException id0) {
    ^

    Se non sbaglio mi segnala che nel corpo del main, all'interno del blocco try io non ho sollevato nessuna eccezione e che quindi è inutile intercettare l'eccezione. Eppure il costruttore di File, in caso il file non esistesse, mi solleva l'eccezione! Boh sicuramente voi sapete darmi una mano!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Ankarir Visualizza il messaggio
    Se non sbaglio mi segnala che nel corpo del main, all'interno del blocco try io non ho sollevato nessuna eccezione e che quindi è inutile intercettare l'eccezione.
    Se nel corpo del try non c'è alcuna invocazione di metodo/costruttore che dichiara di lanciare FileNotFoundException (checked), allora è sbagliato catchare FileNotFoundException, perché il compilatore "sa" che non ce ne possono essere e quindi il codice nel catch diventa "unreachable", non raggiungibile e il compilatore in generale non accetta codice che sa a priori che non verrà mai eseguito.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2014
    residenza
    Cantalupa (TO)
    Messaggi
    24
    Grazie per la risposta tempestiva! Cosa devo scrivere all'interno del codice per catturare l'eccezione in caso che il nome nel file sia sbagliato?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Ankarir Visualizza il messaggio
    Grazie per la risposta tempestiva! Cosa devo scrivere all'interno del codice per catturare l'eccezione in caso che il nome nel file sia sbagliato?
    Il costruttore di File non lancia FileNotFoundException, perché crea l'oggetto File che rappresenta solo il pathname in modo astratto.
    Sono le altre classi di I/O es. FileOutputStream, PrintWriter che lanciano FileNotFoundException se il loro costruttore non è in grado di usare il file perché appunto non esiste.

    Quindi dipende da cosa devi scrivere e con quale classe di I/O.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2014
    residenza
    Cantalupa (TO)
    Messaggi
    24
    hai ragione, ho letto male le api, grazie mille per le risposte!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.