Если вы не знаете, как обрабатывать 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, оборачивающим другого читателя,таким образом, есть метод close, читатель не должен быть полем экземпляра.Это должна быть локальная переменная, как показано в моем примере.