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