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建议投掷,但我不明白它在做什么,或者它是否甚至解决了问题?
感谢帮助!
答案 0 :(得分: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
}
}
}
}
另外,请注意,除非您的类本身是一种包含其他阅读器的Reader,因此具有接近的方法,读者不应该是实例字段。它应该是一个局部变量,如我的例子所示。