诡异的java.lang.ArithmeticException: null
线上突然出现接口异常,日志信息如下:
13:48:34.968 [http-nio-8701-exec-10] ERROR c.w.k.c.e.GlobalExceptionHandler - 未知异常:
java.lang.ArithmeticException: null
13:49:18.257 [http-nio-8701-exec-3] ERROR c.w.k.c.e.GlobalExceptionHandler - 未知异常:
java.lang.ArithmeticException: null
14:05:40.817 [http-nio-8701-exec-8] ERROR c.w.k.c.e.GlobalExceptionHandler - 未知异常:
java.lang.ArithmeticException: null
14:43:45.592 [http-nio-8701-exec-6] ERROR c.w.k.c.e.GlobalExceptionHandler - 未知异常:
java.lang.ArithmeticException: null
代码中有一块逻辑,是一堆复杂的计算,但是遇到除以零的情况下,整体数据为0
public static BigDecimal divideZeroCheck(Supplier<BigDecimal> a) {
try {
return a.get();
} catch (ArithmeticException e) {
String message = e.getMessage();
if (Objects.equals(message, "Division by zero") || Objects.equals(message, "/ by zero")) {
return BigDecimal.ZERO;
}
throw e;
}
}
后面了解到,当这种异常出现过多的情况下,异常会被直接优化掉,导致message直接为null

2万+

被折叠的 条评论
为什么被折叠?



