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

    [JAVA] Valori variabili d'istanza dopo lancio eccezione

    Ciao,
    sto scrivendo il costruttore di una classe che, dato un file di testo, seleziona ogni riga del file, esegue dei controlli e poi salva la riga su una struttura di supporto.
    Il controllo che viene effettuato su ogni riga se non superato lancia una eccezione che il chiamante deve gestire.

    La mia domanda è:
    mettiamo il caso che la struttura sia una pila, e che la n-sima riga del file contenga informazioni non valide, e che quindi io debba lanciare l'eccezione.
    Ha senso continuare a tenere sulla pila i dati precedentemente acquisiti?
    O forse sarebbe meglio scansionare 2 volte il file, una volta per controllare se si verificano errori e l'altra per salvare le info nella pila?

    Grazie

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

    Re: [JAVA] Valori variabili d'istanza dopo lancio eccezione

    Originariamente inviato da Downloader
    sto scrivendo il costruttore di una classe che, dato un file di testo, seleziona ogni riga del file, esegue dei controlli e poi salva la riga su una struttura di supporto.
    Il controllo che viene effettuato su ogni riga se non superato lancia una eccezione che il chiamante deve gestire.
    Spero davvero che non sia proprio il costruttore a fare tutto questo! Il costruttore dovrebbe servire solo per "costruire" e inizializzare lo stato dell'oggetto .... non per fare I/O, controlli, ecc....

    Originariamente inviato da Downloader
    mettiamo il caso che la struttura sia una pila, e che la n-sima riga del file contenga informazioni non valide, e che quindi io debba lanciare l'eccezione.
    Ha senso continuare a tenere sulla pila i dati precedentemente acquisiti?
    Se fai come hai detto, cioè tutto nel costruttore, se lanci una eccezione di fuori allora .... l'oggetto non ce l'hai!!
    Pensa:

    MioOggetto o = new MioOggetto();

    Se il costruttore lancia una eccezione, la assegnazione sopra non viene fatta, non hai il riferimento all'oggetto e quindi in qualunque stato sia l'oggetto .... che importa?
    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
    Nov 2003
    Messaggi
    726
    Sul secondo punto hai perfettamente ragione.
    Sul primo invece devo confermarti che fa tutto il costruttore (ovviamente per rendere il metodo più snello si fa riferimento anche a metodi privati della stessa classe).
    La classe in questione per lavorare ha necessariamente bisogno di quelle informazioni prese dal file e "catalogate" in un certo modo.

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726

    Re: Re: [JAVA] Valori variabili d'istanza dopo lancio eccezione

    Originariamente inviato da andbin
    Se il costruttore lancia una eccezione, la assegnazione sopra non viene fatta, non hai il riferimento all'oggetto e quindi in qualunque stato sia l'oggetto .... che importa?
    Mi interessava solo il fattore tempo.
    Scorrere un file di testo, controllare riga per riga e memorizzarne una parte in una pila (ad esempio) richiederà sicuramente di più tempo dello scorrere e controllare il file, nel caso si verificasse un problema e si dovesse interrompere il metodo con una eccezione.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    up

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    157
    dipende anche dalla dimensione del file di testo, considera che se facessi due scansioni dovresti:
    leggere una riga
    controllarla

    leggere una riga
    inserirla

    con un ciclo invece
    leggere una riga
    controllarla
    inserirla

    ti converrebbe quindi far tutto in un ciclo, anche per evitare situazioni di inconsistenza.

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.