} catch (InterruptedException e) {
throw new RuntimeException("Operation cancelled");
} catch (Exception e) {
e.printStackTrace();
if (nextLine != null && lineCount != 0) {
throw new ParserException(e.getMessage(), e, lineCount, nextLine);
} else {
throw new RuntimeException(e);
}
} finally {
if (reader != null) {