问题描述
尽管我有StringUtils.isBlank()
并且我还添加了一个不可破坏的空白字符的检查,但我收到了 NumberFormatException,如下面的代码中所述:
if (isBlank(amtBeforeTax) || amtBeforeTax.matches("^[\\p{Z}]*$")) {
ra.setAmtBeforeTax(BigDecimal.ZERO);
} else {
ra.setAmtBeforeTax(new BigDecimal(amtBeforeTax));
}
我仍然在上面的代码中遇到数字格式异常。
我无法控制amtBeforeTax
,这是我正在获取的数据流,只是将其设置为其他对象。
我想知道我将在这里接手的前兆究竟是什么,以避免出现异常。
1楼
解决它的一种方法是捕获NumberFormatException
,有效地使用BigDecimal
构造函数来执行验证,而不是自己编写规则:
try {
ra.setAmtBeforeTax(new BigDecimal(amtBeforeTax))
} catch (NumberFormatException ex) {
ra.setAmtBeforeTax(BigDecimal.ZERO);
}