在IBM WebSphere上运行的意外异常java.math.BigDecimal

时间:2011-02-07 16:29:13

标签: java websphere nullpointerexception bigdecimal

在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上运行。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

修正:

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

BigDecimal annualPremiumAmt;
for(...) { 

    if (nwtPremium) {
        annualPremiumAmt = nwtPremium.getAnnualAmt() != null ? nwtPremium.getAnnualAmt() : BigDecimal.ZERO;
        policyFormTotal = policyFormTotal.add(annualPremiumAmt);
        formList.setFormPremiumAmt(formList.getFormPremiumAmt().add(annualPremiumAmt));
    }
}

答案 2 :(得分:0)

policyFormTotal是否为NULL? formList.getFormPremiumAmt()的结果怎么样? 你永远不会检查这个代码块中的那些。