-2

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

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

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

4

1 回答 1

1

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

try {
  ra.setAmtBeforeTax(new BigDecimal(amtBeforeTax))
} catch (NumberFormatException ex) {
  ra.setAmtBeforeTax(BigDecimal.ZERO);
}
于 2019-02-12T15:22:07.350 回答