Ostatnio implementując BufferedReader zastanowiła mnie taka sytuacja:
public interface ItemReader {
List<String> read();
}
public class FlatFileItemReader implements ItemReader {
private final String filePath;
public FlatFileItemReader(String filePath) {
this.filePath = filePath;
}
@Override
public List<String> read() {
List<String> dataList = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
for (String s; (s = br.readLine()) != null;) {
// BLA BLA - logika - jakas obróbka s
dataList.add(s)
}
} catch (IOException e) {
log.warning(e.getMessage());
System.exit(1); // <-- TUTAJ
}
return dataList;
}
}
Generalnie jest kilka opcji zczytywania danych, tutaj jest akurat implementacja czytanie z pliku. W przypadku jakiegokolwiek Exception (FileNotFoundException, zły format danych, czy cokolwiek innego) aplikacja ma być zatrzymana. Boli mnie ten System.exit(1), jakoś mi to strasznie nie pasuje. Myślałem pierw czy by metody read() nie przerobić na void, w klasie reader zmienną lokalną dataList zrobić jako zmienną klasową i udostępnić do niej dostęp, albo jakaś inna klasa i kompozycja. Co myślicie?