@DarkByte2015

Почему выдает ошибку компиляции?

Скажите пожалуйста почему в этом коде:
public void write() throws IOException {
	String splitter = String.join("", Collections.nCopies(settings.page.width, "-"));
	List<String> headLines = columnsToRows(getColumnTitles());

	try (BufferedWriter writer = Files.newBufferedWriter(outputPath, DEFAULT_CHARSET)) {
	    inputData.stream().map(this::columnsToRows).flatMap(List::stream).forEach(writer::write);
	}
}


Ругается на вызов forEach(writer::write) - "Unhandled exception: java.io.IOException"? Ведь в сигнатуре метода явно указано что он бросает этот тип исключений! Мне не надо ловить его тут, я хочу чтобы если будет исключение оно улетело за пределы метода (я там его ловлю).
  • Вопрос задан
  • 219 просмотров
Решения вопроса 1
@DarkByte2015 Автор вопроса
Короче сделал вот так:
public void write() throws IOException {
	List<String> columnTitles = settings.columns.stream().map(x -> x.title).collect(Collectors.toList());
	String splitter = String.join("", Collections.nCopies(settings.page.width, "-"));
	List<String> headLines = columnsToRows(columnTitles);

	try (BufferedWriter writer = Files.newBufferedWriter(outputPath, DEFAULT_CHARSET)) {
	    Stream<String> lines = inputData.stream().flatMap(x -> columnsToRows(x).stream().limit(columnTitles.size()));
	    Iterator<String> iterator = lines.iterator();

	    while (iterator.hasNext()) {
		String line = iterator.next();
		writer.write(line);
	    }
	}
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Shockoway
@Shockoway
Как вариант - можно было бросить unchecked исключение:
public void write() {
        String splitter = String.join("", Collections.nCopies(settings.page.width, "-"));
        List<String> headLines = columnsToRows(getColumnTitles());

        try (BufferedWriter writer = Files.newBufferedWriter(outputPath, DEFAULT_CHARSET)) {
            inputData.stream().map(this::columnsToRows).flatMap(List::stream).forEach(writer::write);
        } catch (IOException e) {
            throw new UncheckedIOException(e);
        }
    }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы