2013-03-13 5 views
0

Je reçois l'avertissement suivantEclipse avertissement

Null passed for nonnull parameter of new java.util.Scanner(Readable) in  
    model.WordCount.getFile(File). 

Pourquoi suis-je recevoir cela et comment puis-je me débarrasser de cet avertissement? Voici la méthode:

/** 
    * Receives and parses input file. 
    * 
    * @param the_file The file to be processed. 
    */ 
    public void getFile(final File the_file) { 
    FileReader fr = null; 
    try { 
     fr = new FileReader(the_file); 
    } catch (final FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
    Scanner input = null; 
    String word; 
    input = new Scanner(fr); 
    while (input.hasNext()) { 
     word = input.next(); 
     word = word.toLowerCase(). 
      replaceAll("\\.|\\!|\\,|\\'|\\\"|\\?|\\-|\\(|\\)|\\*|\\$|\\#|\\&|\\~|\\;|\\:", ""); 
     my_first.add(word); 
     setCounter(getCounter() + 1); 
    } 
    input.close(); 
    } 

je devais initialiser le FileReader null pour éviter une erreur. C'est ce qui a déclenché l'avertissement.

Répondre

1

Si la ligne

fr = new FileReader(the_file); 

lance une exception, fr reste nulle et ne fonctionnera certainement pas dans le scanner. C'est l'objet de l'avertissement. Il est fondamentalement vous dire que l'impression de la trace de la pile d'une exception n'est pas une bonne gestion des erreurs. Au lieu de cela, vous devriez penser à revenir hors de la méthode en cas de cette exception précoce. Ou bien, vous pouvez placer le bloc de gestion des exceptions autour de tout le code de la méthode, pas seulement autour de cette seule ligne. Ensuite, l'avertissement disparaîtra également, car une exception conduirait à ne plus exécuter de code supplémentaire dans la méthode.

+0

Merci! C'était très utile. –

Questions connexes