StringUtils.isBlank方法的NumberFormatException

问题描述 投票:-2回答:1

我得到一个NumberFormatException虽然我有StringUtils.isBlank(),我还添加了一个不可破坏的空格字符的检查,如下面的代码所示:

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

我仍然在上面的代码上得到一个数字格式例外。我无法控制amtBeforeTax,它是我获得的数据流,只是将其设置为其他对象。我想知道我将在这里采取什么样的先例以避免例外。

java numberformatexception apache-stringutils
1个回答
1
投票

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

try {
  ra.setAmtBeforeTax(new BigDecimal(amtBeforeTax))
} catch (NumberFormatException ex) {
  ra.setAmtBeforeTax(BigDecimal.ZERO);
}
© www.soinside.com 2019 - 2024. All rights reserved.