Есть у меня класс, в котором есть метод, который принимает строку и
парсит её с помощью
стримов в массив типа
double, который выбрасывает исключение типа неверного формата данных:
Класс-парсер
public double[] parseString (String dataString) throws QuadrangleException {
String withoutCommas = dataString.
replace(REGEX_COMMA, REGEX_SPACE)
.trim();
double[] parseData;
try {
parseData = Arrays.stream(withoutCommas.split(REGEX_SEPARATOR))
.mapToDouble(Double::parseDouble)
.toArray();
} catch (NumberFormatException ex) {
LOGGER.log(Level.ERROR, "Incorrect input data", ex);
throw new QuadrangleException("Incorrect input data " + ex);
}
LOGGER.log(Level.INFO, "From string \"{}\" turned out an array: {}", dataString, Arrays.toString(parseData));
return parseData;
}
Тут всё понятно. И вот наступает момент использования метода
parseString() одного класса (код приведен выше) внутри другого метода с помощью стрима вот так:
Нажми, чтобы посмотреть код
@Override
public List<Quadrangle> createQuadrangleFromGroupPoints (List<String> allGroupsPoint) {
DataParser dataParser = new DataParser();
List<Quadrangle> quadrangles = allGroupsPoint.stream()
.map(dataParser::parseString)
.map(this::convertToListPoint)
.map(p -> new Quadrangle(p.get(0), p.get(1), p.get(2), p.get(3)))
.collect(Collectors.toList());
LOGGER.log(Level.INFO, "Was created {} quadrangles.", quadrangles.size());
return quadrangles;
}
// вот метод convertToListPoint
private List<Point> convertToListPoint (double[] doubleDigits) {
int positionX;
int positionY;
List<Point> listPoints = new ArrayList<>();
for (int i = 0; i < POINTS_IN_QUADRANGLE; i++) {
positionX = i * 2;
positionY = positionX + 1;
listPoints.add(new Point(doubleDigits[positionX], doubleDigits[positionY]));
}
LOGGER.log(Level.INFO, "From {} digits was created {} points.", doubleDigits, listPoints.size());
return listPoints;
}
И вот на этой строке
.map(dataParser::parseString)
в стриме мне показывает, что у меня имеется необработанное исключение. Ок, как его правильно обработать? Добавить
throws к методу - это не решение. Тогда как? Можно ли как-то использовать этот стрим или его нужно будет заменить?