View Full Version : [Java] - domanda su EOFException
JCoder87
05-10-2008, 10:34
Ciao ragazzi...
Sto leggendo una serie di Object da un file. L'applicazione che sto creando salva regolarmente i dati sul file quando l'utente preme l'apposito pulsante.
Quando l'aplicazione viene lanciata, questa legge automaticamente il file, e prepara i dati già caricati in una JTable... funziona tutto, però una cosa mi lascia scettico...L'eccezione EOFException...
Volevo chiedere se qualcuno sa darmi qualche informazione su di essa, perchè secondo il mio punto di vista sarebbe meglio avere un carattere di EOF, no?... in modo da poter sapere a priori quando l'ObjectInputStream è vuoto e senza far generare al sistema un eccezione. Non sarebbe meglio?, anche perchè così vedo che viene lanciata un eccezione che comunque non intercetto...cioè... Il programma funzione lo stesso ma vedo sul OutputMonitor l'eccezione.
Sono sicuro che un motivo per il quale non si usa un carattere di EOF esiste... però non riesco ad arrivarci..:muro:
Grazie a tutti x l'attenzione
Volevo chiedere se qualcuno sa darmi qualche informazione su di essa, perchè secondo il mio punto di vista sarebbe meglio avere un carattere di EOF, no?... in modo da poter sapere a priori quando l'ObjectInputStream è vuoto e senza far generare al sistema un eccezione. Non sarebbe meglio?Dipende .... ci sono diversi scenari:
a) Indicare all'inizio dello stream il numero di oggetti (con un oggetto es. Integer o scrivendo un int). Non va bene ovviamente se non si sa a priori il numero di oggetti.
b) Andare sempre avanti a leggere aspettandosi ad un certo punto di ricevere EOFException. In tal caso EOFException non è da trattare come un "errore" ma solo come una segnalazione: "non ci sono più oggetti".
c) Scrivere un ultimo oggetto di una classe particolare che ha il solo scopo di indicare la fine degli oggetti.
class MyEOF implements Serializable { // nulla }
In lettura si testa semplicemente: if (oggetto instanceof MyEOF) { // fine }
JCoder87
05-10-2008, 12:26
Dipende .... ci sono diversi scenari:
a) Indicare all'inizio dello stream il numero di oggetti (con un oggetto es. Integer o scrivendo un int). Non va bene ovviamente se non si sa a priori il numero di oggetti.
b) Andare sempre avanti a leggere aspettandosi ad un certo punto di ricevere EOFException. In tal caso EOFException non è da trattare come un "errore" ma solo come una segnalazione: "non ci sono più oggetti".
c) Scrivere un ultimo oggetto di una classe particolare che ha il solo scopo di indicare la fine degli oggetti.
class MyEOF implements Serializable { // nulla }
In lettura si testa semplicemente: if (oggetto instanceof MyEOF) { // fine }
Grazie x la risposta...
Beh, il mio caso è il secondo... Alla fine il sistema mi sta solo avvertendo che non ho più oggetti... Cmq per non vederla visualizzata sull'Output Monitor la terza soluzione è ottima... Ora la aggiungo...
Grazie ancora...
Cmq per non vederla visualizzata sull'Output MonitorOutput Monitor?? Che è? Una finestra di un IDE?
Comunque non è che deve essere "visualizzata" da qualche parte la eccezione EOFException!! Sei tu che devi catturarla e quindi far terminare il ciclo di lettura!!
JCoder87
06-10-2008, 00:13
Output Monitor?? Che è? Una finestra di un IDE?
Comunque non è che deve essere "visualizzata" da qualche parte la eccezione EOFException!! Sei tu che devi catturarla e quindi far terminare il ciclo di lettura!!
Si..La vedevo visualizzata sull'Output Monitor di NetBeans... Lei per quello non mi dava fastidio...l'applicazione si avviava tranquillamente e caricava i dati... La mia domanda si riferiva solo al fatto di non farla neanche lanciare...e sono riuscito col tuo metodo della MyEOF...
Cioè...Mi sembrava un pò inutile intercettarla..tanto alla fine non dovevo fare nulla, quindi era meglio trovare un metodo per non farla neppure lanciare..Bella idea quello di creare una Classe di EOF...
Thanks
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.