我得到一个NumberFormatException虽然我有StringUtils.isBlank()
,我还添加了一个不可破坏的空格字符的检查,如下面的代码所示:
if (isBlank(amtBeforeTax) || amtBeforeTax.matches("^[\\p{Z}]*$")) {
ra.setAmtBeforeTax(BigDecimal.ZERO);
} else {
ra.setAmtBeforeTax(new BigDecimal(amtBeforeTax));
}
我仍然在上面的代码上得到一个数字格式例外。我无法控制amtBeforeTax
,它是我获得的数据流,只是将其设置为其他对象。我想知道我将在这里采取什么样的先例以避免例外。
解决它的一种方法是捕获NumberFormatException
,有效地使用BigDecimal
构造函数来执行验证,而不是自己编写规则:
try {
ra.setAmtBeforeTax(new BigDecimal(amtBeforeTax))
} catch (NumberFormatException ex) {
ra.setAmtBeforeTax(BigDecimal.ZERO);
}