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

    [JAVA] Gestire o non gestire una eccezione

    Ciao,
    devo leggere un file che in teoria ha un numero di righe >= 2.
    Le prime due righe però sono particolari, perchè a differenza delle restanti, obbediscono ad un particolare formato.
    Devo leggere il contenuto di queste due righe, utilizzando la classe Scanner.

    Il problema è questo:
    dal momento che io non ho la certezza che queste prime due righe esistano devo effettuare un controllo.
    Scanner mi fornisce il metodo hasNextLine(), ma mi scoccerebbe utilizzarlo per ben 3 volte (la prima per la prima riga, la seconda per la seconda riga e la terza per le righe restanti).

    Avevo quindi pensato di inserire il codice che preleva le prime due righe (per le restanti basta un while con hasNextLine() == true come condizione) all'intero di un blocco try, e di gestire l'eccezione nel caso si verificasse.

    Non so però di quale potrebbe essere il comportamento migliore.
    Se non uso il blocco try/catch mi risparmio un paio di blocchi if/else e ne guadagno un po' anche in leggibilità, se invece uso if/else "allungo il brodo", ma almeno non devo ricorrere a gestire le eccezioni, quando ci sono i metodi che mi permettono di non farlo.

    grazie

  2. #2
    Quello che farei io è estrarre la parte che ti legge l'header in un metodo a parte che usa if-else e ti ritorna un boolean se è andato a buon fine o meno

    codice:
    ...
    
    if(leggiHeader(fileInput)) {
      while(fileInput.hasNextLine() {
        // gestisco il resto del file
      }
    } else {
      // gestisci file senza header
    }
    
    ...
    
    private static boolean leggiHeader(Scanner fileInput) {
      if(fileInput == null || !fileInput.hasNextLine()) return false;
      String primaRiga = fileInput.nextLine();
      // gestisci prima riga
      if(!fileInput.hasNextLine()) return false;
      String secondaRiga = fileInput.nextLine();
      // gestisci seconda riga
      return true;
    }
    
    ...

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.