Skip to content

Commit ef02ec7

Browse files
committed
Catch ParseException in SIGMA body evaluate() calls
1 parent dd51b3f commit ef02ec7

2 files changed

Lines changed: 12 additions & 2 deletions

File tree

core/src/main/java/cn/superiormc/ultimateshop/utils/MathFunctionTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,12 @@ public EvaluationValue evaluate(Expression expression, Token functionToken,
4444
BigDecimal sum = BigDecimal.ZERO;
4545
for (int i = start; i <= end; i++) {
4646
Expression sub = new Expression(body, config).with("i", BigDecimal.valueOf(i));
47-
sum = sum.add(sub.evaluate().getNumberValue());
47+
try {
48+
sum = sum.add(sub.evaluate().getNumberValue());
49+
} catch (com.ezylang.evalex.parser.ParseException e) {
50+
throw new EvaluationException(functionToken,
51+
"SIGMA: error in body expression: " + e.getMessage());
52+
}
4853
}
4954
return EvaluationValue.numberValue(sum);
5055
}

core/src/main/java/cn/superiormc/ultimateshop/utils/MathUtil.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,12 @@ public EvaluationValue evaluate(Expression expression, Token functionToken,
112112
for (int i = start; i <= end; i++) {
113113
Expression subExpr = new Expression(body, expressionConfig)
114114
.with("i", BigDecimal.valueOf(i));
115-
sum = sum.add(subExpr.evaluate().getNumberValue());
115+
try {
116+
sum = sum.add(subExpr.evaluate().getNumberValue());
117+
} catch (com.ezylang.evalex.parser.ParseException e) {
118+
throw new EvaluationException(functionToken,
119+
"SIGMA: error in body expression: " + e.getMessage());
120+
}
116121
}
117122
return EvaluationValue.numberValue(sum);
118123
}

0 commit comments

Comments
 (0)