Прежде всего, такой код всегда плохая идея:
try {
// Do something
} catch(Exception ex) {
throw ex; // WRONG
}
Вы просто маскируете источник исключения и продолжаете бросать. Лучше просто удалить эти строки.
Если вы не создали IndexReader
самостоятельно, вам не нужно закрывать его самостоятельно. Высоки шансы, что вам вообще не нужно использовать метод getIndexReader
.
Кроме того, если вы не присваиваете searcher
в блоке try
, нет необходимости проверять, является ли оно нулевым, поскольку нет способа получить нулевое значение.
Вот пример того, как должен выглядеть ваш код:
String myIndexDir = "/my/index/dir";
IndexSearcher searcher = new IndexSearcher(myIndexDir);
try {
// Do something with the searcher
} finally {
searcher.close();
}