4

在 IBM WebSphere 上运行 Java 应用程序导致了这样的异常:

Caused by: java.lang.NullPointerException
at java.math.BigDecimal.add2DFP(BigDecimal.java:1946)
at java.math.BigDecimal.add(BigDecimal.java:1881)
at com.somepackage.components.view.PremiumSummaryViewModel.setPremiums(PremiumSummaryViewModel.java:101)

空值检查完成。正如我回顾java.math.BigDecimal类没有这样的方法add2DFP也没有调用一个。也许它特定于 IBM 的 JDK。

对此的任何评论将不胜感激。

提供有关异常的代码

    BigDecimal annualPremiumAmt = nwtPremium != null && nwtPremium.getAnnualAmt() != null ? nwtPremium.getAnnualAmt() : BigDecimal.ZERO;
    if (nwtPremium != null) {
        BigDecimal formPremiumAmt = nwtPremium.getAnnualAmt();
        if (formPremiumAmt != null) {
            policyFormTotal = policyFormTotal.add(annualPremiumAmt); //Bigdecimal
            formList.setFormPremiumAmt(formList.getFormPremiumAmt().add(annualPremiumAmt)); //101 line
        }
    }

实例在 IBM JDK 1.6 上运行。

4

3 回答 3

1

我会将您的问题提交给 IBM 软件支持。他们不按实例收费,只要您有支持协议,请求数量不受限制。

于 2011-02-09T18:26:00.303 回答
1

固定的:

实际上,这整个表达式都在我认为没有必要提及的循环内。我在循环之前移动了BigDecimal 年度PremiumAmt的声明并重新组织了代码:

BigDecimal annualPremiumAmt;
for(...) { 

    if (nwtPremium) {
        annualPremiumAmt = nwtPremium.getAnnualAmt() != null ? nwtPremium.getAnnualAmt() : BigDecimal.ZERO;
        policyFormTotal = policyFormTotal.add(annualPremiumAmt);
        formList.setFormPremiumAmt(formList.getFormPremiumAmt().add(annualPremiumAmt));
    }
}
于 2011-02-12T14:05:27.467 回答
0

policyFormTotal 是 NULL 吗?formList.getFormPremiumAmt() 的结果如何?您永远不会检查此代码块中的内容。

于 2011-02-09T18:32:03.363 回答