在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上运行。
答案 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()的结果怎么样? 你永远不会检查这个代码块中的那些。