2012-02-05 109 views
-2
public void tokenize(){ 
    // attempt creating a reader for the input 
    reader = this.newReader(); 

    while((line = reader.readLine())!=null){ 
     tokenizer = new StringTokenizer(line); 
     while(tokenizer.hasMoreTokens()){ 
      toke = (tokenizer.nextToken().trim()); 
      this.tokenType(toke); 
      //System.out.println(this.tokenType(toke)); 
     } 

    } 
} 

private BufferedReader newReader(){ 
    try {//attempt to read the file 
     reader = new BufferedReader(new FileReader("Input.txt")); 
    } 

    catch(FileNotFoundException e){ 
     System.out.println("File not found"); 
    } 
    catch(IOException e){ 
     System.out.println("I/O Exception"); 
    } 
    return reader; 
} 

我以爲我在newReader()中處理了它,但它似乎無法訪問。 Eclipse推薦了一個拋出,但我不明白它在做什麼,或者它甚至解決了這個問題?如何正確處理這個IOException?

感謝幫助!

+0

你在說什麼IOException,'reader.readLine()'? – home 2012-02-05 17:38:39

回答

1

如果您不知道如何在此方法中處理IOException,那麼這意味着它不是該方法的責任來處理它,因此應該由該方法拋出。

讀者應該在此方法中被關閉,不過,因爲這種方法打開它:

public void tokenize() throws IOException { 
    BufferedReader reader = null; 
    try { 
     // attempt creating a reader for the input 
     reader = this.newReader(); 
     ... 
    } 
    finally { 
     if (reader != null) { 
      try { 
       reader.close(); 
      } 
      catch (IOException e) { 
       // nothing to do anymore: ignoring 
      } 
     } 
    } 
} 

另外請注意,除非你的類本身就是一種閱讀器的包裝另外的讀者,因此有着密切的方法,讀者不應該是一個實例字段。它應該是一個局部變量,如我的示例中所示。