StringUtils.isBlank方法上的NumberFormatException

时间:2019-02-12 15:17:47

标签: java numberformatexception apache-stringutils

尽管我有StringUtils.isBlank(),但我也遇到了NumberFormatException异常,并且还添加了一个对不可中断的空白字符的检查,如下面的代码所述:

if (isBlank(amtBeforeTax) || amtBeforeTax.matches("^[\\p{Z}]*$")) {
                ra.setAmtBeforeTax(BigDecimal.ZERO);
            } else {
                ra.setAmtBeforeTax(new BigDecimal(amtBeforeTax));
            }

仍然在上面的代码中出现数字格式异常。我没有对amtBeforeTax的控制权,它是我获取的数据流,只是将其设置为其他对象。我想知道我将在这里接任什么职务以避免发生例外。

1 个答案:

答案 0 :(得分:1)

一种解决方法是捕获NumberFormatException,有效地使用BigDecimal构造函数执行验证,而不是自己编写规则:

try {
  ra.setAmtBeforeTax(new BigDecimal(amtBeforeTax))
} catch (NumberFormatException ex) {
  ra.setAmtBeforeTax(BigDecimal.ZERO);
}