Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    55

    [java][newbie] help eccezioni

    Ciao , sto scrivendo una classe per un progettino universitario, nel codice sotto c'è solo un metodo a cui viene passato il nome di un file da aprire.

    il contenuto del file viene poi inserito in un oggetto stringbuffer per essere elaborato.

    non sono sicuro di aver capito esattamente come funzionano le eccezioni , qualcuno può dare un'occhiata al codice e dirmi se ho usato le eccezioni in modo giusto ?


    grazie

    codice:
    class Weditor {  
        
        StringBuffer $_buffer_ = new StringBuffer();
        int $_curPos_ = 0;
        
        /** ----------------------------------------------- **/
        
        public Weditor(String nomefile) throws FileNotFoundException {
            
            File f = new File(nomefile); 
            int ch;
            
            try{
    
                if(f.exists())
                {
                    
                    try {
                        
                    FileInputStream fis = new FileInputStream(nomefile);
                    InputStreamReader isr = new InputStreamReader(fis, "UTF8");
                    
                    Reader in = new BufferedReader(isr);
                    while ((ch = in.read()) > -1) {
                            $_buffer_.append((char)ch);
                    }
                    in.close();
                    
                    } catch (IOException e) {
                        System.out.println(e.getMessage());
                    }
                    
                } else {
                    
                    throw new FileNotFoundException("File non trovato.");
                    
                }
            } 
            
            catch (FileNotFoundException e) {  
               System.out.println(e.getMessage());        
            }       
        }
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    Re: [java][newbie] help eccezioni

    Originariamente inviato da escaria
    Ciao , sto scrivendo una classe per un progettino universitario, nel codice sotto c'è solo un metodo a cui viene passato il nome di un file da aprire.

    il contenuto del file viene poi inserito in un oggetto stringbuffer per essere elaborato.

    non sono sicuro di aver capito esattamente come funzionano le eccezioni , qualcuno può dare un'occhiata al codice e dirmi se ho usato le eccezioni in modo giusto ?


    grazie

    codice:
    class Weditor {  
        
        StringBuffer $_buffer_ = new StringBuffer();
        int $_curPos_ = 0;
        
        /** ----------------------------------------------- **/
        
        public Weditor(String nomefile) throws FileNotFoundException {
            
            File f = new File(nomefile); 
            int ch;
            
            try{
    
                if(f.exists())
                {
                    
                    try {
                        
                    FileInputStream fis = new FileInputStream(nomefile);
                    InputStreamReader isr = new InputStreamReader(fis, "UTF8");
                    
                    Reader in = new BufferedReader(isr);
                    while ((ch = in.read()) > -1) {
                            $_buffer_.append((char)ch);
                    }
                    in.close();
                    
                    } catch (IOException e) {
                        System.out.println(e.getMessage());
                    }
                    
                } else {
                    
                    throw new FileNotFoundException("File non trovato.");
                    
                }
            } 
            
            catch (FileNotFoundException e) {  
               System.out.println(e.getMessage());        
            }       
        }
    }
    Direi che per funzionare dovrebbe anche funzionare, ma la dichiarazione del costruttore è un po' strana: tu dichiari che il costruttore può lanciare una eccezione di tipo FileNotFoundException, ma al suo interno catturi questa eccezione se viene sollevata e non la propaghi all'esterno... :master:

    Tu hai usato, giustamente, l'istruzione throw per lanciare questa eccezione con un messaggio personalizzato, ma il punto in cui hai usato questa istruzione è all'interno di un blocco try/catch che, ovviamente, la cattura appena lanciata e la fa "morire"...

    Dovresti scegliere: o gestire l'eccezione (come hai fatto) senza dichiarare che il metodo può lanciare eccezioni (dato che non è vero!!), oppure lasciare all'utilizzatore della classe l'onere di gestire un'eventuale eccezione, eliminando il blocco try/catch più esterno.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Avresti potuto fare anche così:

    Codice PHP:
    class Weditor {  
        
        
    StringBuffer $_buffer_ = new StringBuffer();
        
    int $_curPos_ 0;
        
        
    /** ----------------------------------------------- **/
        
        
    public Weditor(String nomefilethrows FileNotFoundException {
            
            
    File f = new File(nomefile); 
            
    int ch;
            
            try{

                if(
    f.exists())
                {                    
                 
    FileInputStream fis = new FileInputStream(nomefile);
                
    InputStreamReader isr = new InputStreamReader(fis"UTF8");
                    
                    
    Reader in = new BufferedReader(isr);
                    while ((
    ch in.read()) > -1) {
                            
    $_buffer_.append((char)ch);
                    }
                    
    in.close();
                                   
                } else {
                    
                    throw new 
    FileNotFoundException("File non trovato.");
                    
                }
            } 
            
            catch (
    FileNotFoundException e) {  
               
    System.out.println(e.getMessage());        
            } 
            catch( 
    IOException io ){
                
    io.printStackTrace();
            }
        }

    L'unica cosa se definisci che il metodo Weditor(String nomefile) può sollevare l'eccezione FileNotFoundException puoi anche non gestirla all'interno del metodo stesso
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    55
    grazie ragazzi

    quindi in questo modo è giusto

    codice:
    class Weditor {  
        
        StringBuffer $_buffer_ = new StringBuffer();
        int $_curPos_ = 0;
        
        /** ----------------------------------------------- **/
        
        public Weditor(String nomefile) throws FileNotFoundException 
        {
            
            File f = new File(nomefile); 
            int ch;
    
            if(f.exists())
            {
    
                try {
    
                FileInputStream fis = new FileInputStream(nomefile);
                InputStreamReader isr = new InputStreamReader(fis, "UTF8");
    
                Reader in = new BufferedReader(isr);
                while ((ch = in.read()) > -1) {
                        $_buffer_.append((char)ch);
                }
                in.close();
    
                } catch (IOException e) {
                    System.out.println(e.getMessage());
                }
    
            } else {
    
                throw new FileNotFoundException("File non trovato.");
    
            }
                 
        }
    }

    e questa la classe di test

    codice:
    public class testWeditor {
        /** Creates a new instance of testWeditor */
        public static void main(String args[]) {
            try{
                Weditor we = new Weditor("c:/java_test/prov.txt");  
            }catch (FileNotFoundException e) {
                System.out.println(e.getMessage());
            }
        }
    }

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Direi di sì.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Sì, ciao
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    55
    grazie ancora

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 © 2024 vBulletin Solutions, Inc. All rights reserved.