Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Problema con eccezione

  1. #1

    Problema con eccezione

    Ciao a tutti. Ho un problema con questo frammento di codice:

    Codice PHP:
            try
            {
                
    File clients = new File("clients.dat");
                if (!
    clients.exists())
                {
                    
    file = new RandomAccessFile("clients.dat","rw");        
                    
    RandomAccessAccountRecord blankRecord = new RandomAccessAccountRecord();
                    
                    for (
    int count=0;count<100;count++)
                    {
                        
    blankRecord.write(file);
                    }
                    
                    
    closeFile();
                }
                
                if (
    choice == 1)
                {
                    
    file = new RandomAccessFile("clients.dat","r");
                    
    record = new RandomAccessAccountRecord();
                    
                    
    System.out.printf("\n%-10s%-15s%-15s%-10s\n\n",
                    
    "Account","Nome","Cognome","Bilancio");
                                
                    while (
    true)
                    {
                        do
                        {
                            
    record.read(file);
                        } while (
    record.getAccount() == 0);
                    
                        
    System.out.printf("%-10d%-15s%-15s%-10.2f\n",
                        
    record.getAccount(),
                        
    record.getFirstName(),
                        
    record.getLastName(),
                        
    record.getBalance());
                    }
                }        
                else
                {
                    
    file = new RandomAccessFile("clients.dat","rw");
                    
    record = new RandomAccessAccountRecord();
                    
                    
    int i;
                    for (
    i=0;i<100;i++)
                    {
                        
    countRecords[i] = 0.0;
                    }
                    for (
    i=0;i<100;i++)
                    {
                        
    record.read(file);
                        
    countRecords[i] = record.getAccount();
                    }
                }
            }        
            catch (
    IOException e)
            {
                
    System.err.print("\nErrore nell'apertura del file o file inesistente");
                
    System.exit(1);
            } 
    Praticamente, riesco a leggere tutto il contenuto del file, ma alla fine l'eccezione si verifica lo stesso (IOException)... non capisco perchè. Come risolvo?

  2. #2
    posta lo stack trace dell'eccezione
    Ivan Venuti
    Vuoi scaricare alcuni articoli sulla programmazione, pubblicati su riviste di informatica? Visita http://ivenuti.altervista.org/articoli.htm. Se vuoi imparare JavaScript leggi il mio libro: http://www.fag.it/scheda.aspx?ID=21754 !

  3. #3
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790

    Re: Problema con eccezione

    Originariamente inviato da Dreamer89
    Ciao a tutti. Ho un problema con questo frammento di codice:

    Codice PHP:
            try
            {
                
    File clients = new File("clients.dat");
                if (!
    clients.exists())
                {
                    
    file = new RandomAccessFile("clients.dat","rw");        
                    
    RandomAccessAccountRecord blankRecord = new RandomAccessAccountRecord();
                    
                    for (
    int count=0;count<100;count++)
                    {
                        
    blankRecord.write(file);
                    }
                    
                    
    closeFile();
                }
                
                if (
    choice == 1)
                {
                    
    file = new RandomAccessFile("clients.dat","r");
                    
    record = new RandomAccessAccountRecord();
                    
                    
    System.out.printf("\n%-10s%-15s%-15s%-10s\n\n",
                    
    "Account","Nome","Cognome","Bilancio");
                                
                    while (
    true)
                    {
                        do
                        {
                            
    record.read(file);
                        } while (
    record.getAccount() == 0);
                    
                        
    System.out.printf("%-10d%-15s%-15s%-10.2f\n",
                        
    record.getAccount(),
                        
    record.getFirstName(),
                        
    record.getLastName(),
                        
    record.getBalance());
                    }
                }        
                else
                {
                    
    file = new RandomAccessFile("clients.dat","rw");
                    
    record = new RandomAccessAccountRecord();
                    
                    
    int i;
                    for (
    i=0;i<100;i++)
                    {
                        
    countRecords[i] = 0.0;
                    }
                    for (
    i=0;i<100;i++)
                    {
                        
    record.read(file);
                        
    countRecords[i] = record.getAccount();
                    }
                }
            }        
            catch (
    IOException e)
            {
                
    System.err.print("\nErrore nell'apertura del file o file inesistente");
                
    System.exit(1);
            } 
    Praticamente, riesco a leggere tutto il contenuto del file, ma alla fine l'eccezione si verifica lo stesso (IOException)... non capisco perchè. Come risolvo?
    cm modalità di accesso ai file nn ho mai visto rw al massimo r+..ops ho sbagliato asd

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Problema con eccezione

    Originariamente inviato da Metflar
    cm modalità di accesso ai file nn ho mai visto rw al massimo r+ asd
    http://java.sun.com/javase/6/docs/ap...a.lang.String)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Ho risolto! Dovevo gestire EOFException per il do...while. Grazie lo stesso

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Dreamer89
    Dovevo gestire EOFException per il do...while.
    La questione è del tutto relativa. Infatti non è l'unico approccio possibile, ne esistono diversi in casi come questi.

    Se non sai a priori quanti dati ci sono nel file puoi certamente andare avanti a leggere finché ... beh, salta fuori EOFException. Ma potresti anche determinare quanti dati ci sono da leggere basandoti sulla posizione corrente e sulla lunghezza del file.
    In alternativa si potrebbe mettere all'inizio del file una informazione su quanti dati/elementi ci sono oppure si può mettere al fondo del file un dato particolare di "marcatura" della fine dei dati.

    Quale soluzione usare, dipende ovviamente da diversi fattori ma principalmente da come è strutturato il file.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.